以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 从WINAPI和CALLBACK这两个宏说开去- - (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=27018) |
-- 作者:卷积内核 -- 发布时间:2/7/2006 10:29:00 AM -- 从WINAPI和CALLBACK这两个宏说开去- - 从bbs上看到有同学问这个问题,因此回答了这个帖子。 WINAPI和CALLBACK这两个宏有什么区别呢? _stdcall _cdecl _pascal _fastcall这些关键字是什么意思,有什么区别呢?
首先看MSDN里给出的解释,不过有些语焉不详哦 WINAPI CALLBACK 再看看到底这两个宏的内容是什么吧 VC:WINDEF.h BCB:windef.h 引出了cdecl stdcall等一些可能很少见的关键字 那么cdecl、pascal、stdcall、fastcall等修饰符号到底什么意思呢? 下面把区别列表如下: Directive Parameter order Clean-up Passes parameters in registers? 简单说明: __cdecl是C/C++和MFC程序默认使用的调用约定,也可以在函数声明时加上__cdecl关键字来手工指定。采用__cdecl约定时,函数参数按照从右到左的顺序入栈,并且由调用函数者把参数弹出栈以清理堆栈。因此,实现可变参数的函数只能使用该调用约定。由于每一个使用__cdecl约定的函数都要包含清理堆栈的代码,所以产生的可执行文件大小会比较大。__cdecl可以写成_cdecl。
|
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |