• 全部
  • VC综合技术
  • 互联网技术
  • MFC AppLauncher
  • .NET 技术
  • 界面
  • 进程
  • 算法
  • 硬件/系统
  • 数据库
  • VC++技术资源

请问一个VC初学者解释以下关于PASCAL的问题~~

linweiqun 2008-04-08 03:15:52
在看书的时候,看到'PASCAL'一词的出现,但是完全不理解它的用法~以前没接触过~
这本书是在这论坛上看到人家介绍的,<深入浅出MFC>,
希望有这本书的人,可以翻翻看,为我解释解释~~~诚谢啊!
Page 97
struct
{
...
CObject* (PASCAL* m_pfnCreateObject)();
...
}

Page 116
CObject* pObject;
pObject = (*m_pfnCreateObject)();

以前见过对'PASCAL'使用,所以请解释详细点~非常感谢!!!!!!
在此,代表菜鸟同志们,向答题者致敬!∠○




...全文
47 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
linweiqun 2008-04-08
谢谢各位~~~因为分数不够,所以有的没给到分~~~
其他的只能言谢了.
回复
cnzdgs 2008-04-08
这里的PASCAL是指函数调用时传递参数的规则,PASCAL与__stdcall相同,函数调用时参数从右到左依次压栈,函数返回时清栈。
此外还有__cdecl、__thiscall、__fastcall。函数定义时指定用哪种规则来传递参数,如果没有指定则使用默认的规则。再强制转换函数指针要注意,传递参数的规则必须相同,其它情况可不必考虑。
回复
superarhow 2008-04-08
pascal就是参数从左往右入栈,被调用端从右往左访问堆栈,并且被调用端清除堆栈。这种设定可以省去调用端几个字节的指令(因为通常每个函数不只被调用一次,所以被调用得越多越省……不过即使你在程序里面call了1000遍也不过省了几K字节而已,呵呵)。这种设定的弊端在于参数数量成了固定的了,没办法定义向printf之类的可变参数函数。
回复
rushman 2008-04-08
说明调用参数在栈内的顺序。一般无须深究。
回复
swankie 2008-04-08
在 windef.h 中

#define PASCAL __stdcall
#define WINAPI __stdcall


是函数的一种编译约束或描述了,我说的不严密啊。
与之对应的还有一种 __cdecl

区别:
The __stdcall calling convention is used to call Win32 API functions. The callee cleans the stack, so the compiler makes vararg functions __cdecl. Functions that use this calling convention require a function prototype. The following list shows the implementation of this calling convention.


This is the default calling convention for C and C++ programs. Because the stack is cleaned up by the caller, it can do vararg functions. The __cdecl calling convention creates larger executables than __stdcall, because it requires each function call to include stack cleanup code. The following list shows the implementation of this calling convention.




回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-04-08 03:15
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……