PASCAL==CALLBACK==WINAPI==__stdcall
Posted 小乖乖~
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PASCAL==CALLBACK==WINAPI==__stdcall相关的知识,希望对你有一定的参考价值。
VC里面:PASCAL==CALLBACK==WINAPI==__stdcall _stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。 _cdecl是C和C++程序的缺省调用方式。每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大。函数采用从右到左的压栈方式。VC将函数编译后会在函数名前面加上下划线前缀。是MFC缺省调用约定。
关于PASCAL,其实你只要弄明白一点就行了:声明为这种调用约定的函数都是由它本身来清栈,而__cdecl的函数都是由调用者来清栈。 实际用的时候,个人觉得两者最大的差别在于:__cdecl的函数参数个数可以声明为不确定,比如printf,scanf之类,而PASCAL的函数是不可以这样做的,如果这样的话它不知道实参有多少个。
以上是关于PASCAL==CALLBACK==WINAPI==__stdcall的主要内容,如果未能解决你的问题,请参考以下文章
[原]Universal Windows问题:winapifamily问题:WINAPI_PARTITION_DESKTOP问题:WINAPI_PARTITION_APP问题:WINAPI_FAMIL