社区
数据库
帖子详情
一个关于_stdcall 和_cdecl 的问题
NeoHeart
2005-09-08 01:17:34
__stdcall
__cdecl
在vc下面,有这两种函数调用方法,好象后面一种是编译器默认的,前面是自己加的,
在mfc的一些代码里面,就指定了PASCAL(_stdcall)的调用方式,我的问题是:这两种方式有什么不同?分别在什么条件下需要自己指定_stdcall的关键字,谢谢.
...全文
112
4
打赏
收藏
一个关于_stdcall 和_cdecl 的问题
__stdcall __cdecl 在vc下面,有这两种函数调用方法,好象后面一种是编译器默认的,前面是自己加的, 在mfc的一些代码里面,就指定了PASCAL(_stdcall)的调用方式,我的问题是:这两种方式有什么不同?分别在什么条件下需要自己指定_stdcall的关键字,谢谢.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
oyljerry
2005-09-11
打赏
举报
回复
函数调用约定
wshcdr
2005-09-11
打赏
举报
回复
PASCAL现在已经被__stdcall代替了
happyzqj
2005-09-11
打赏
举报
回复
_stdcall是从右向左将参数压入堆栈,由被调用函数清理堆栈。_cdecl也是从右向左将参数压入堆栈,但是由调用函数来清理堆栈。所以使用可变参数的函数是都要用_cdecl形式。
吹泡泡的小猫
2005-09-08
打赏
举报
回复
http://blog.csdn.net/orbit/
有一篇名为“函数调用约定和名称修饰”的文章,讲的就是这方面的内容
关于函数调用方式__
std
call和__
cd
ecl
详解
关于函数调用方式__
std
call和__
cd
ecl
详解 __
std
call __
cd
ecl
两者的相同点与不同点 实例 __
std
call __
std
call的全称是standard call。是C++的标准调用方式。 函数参数的入栈顺序为从右到左入栈。函数返回时使用retn x指令,其中x为调整堆栈的字节数。这种方式叫做自动清栈。即被调用的函数的参数个数是固定的,调用者必须严格按照定义传递参数,
一个
不多,
一个
不少。 __
cd
ecl
__
cd
ecl
的全称是C D
ecl
aration,即C语言默认的函数调用方式。 函数参数的入栈顺序为从右到左入栈。函数返回时作用ret指令。由调用者手动清栈。被调
__
std
call 和 __
cd
ecl
的区别浅析
__
std
call 和 __
cd
ecl
的区别浅析,需要的朋友可以参考一下
函数的调用规则(__
cd
ecl
,__
std
call,__fastcall,__pascal)
函数的调用规则(__
cd
ecl
,__
std
call,__fastcall,__pascal) 关于函数的调用规则(调用约定),大多数时候是不需要了解的,但是如果需要跨语言的编程,比如VC写的dll要delphi调用,则需要了解。 microsoft的vc默认的是__
cd
ecl
方式,而windows API则是__
std
call,如果用vc开发dll给其他语言用,则应该指定__
std
call方式。堆栈由谁清除这个很重要,如果是要写汇编函数给C调用,一定要小心堆栈的清除工作,如果是__
cd
ecl
方式的函数,则函数本身(如果不用汇编写)则不需要关心保存参数的堆栈的清除,但是如果是__
std
call的规则,一定要在函数退出(ret)前恢复堆栈。
_
std
call、_
cd
ecl
和_fastcall 的区别.zip
_
std
call、_
cd
ecl
和_fastcall 的区别.zip
TEST DLL (__
std
call)
TEST DLL (__
std
call) 主要测试生成动态链接库与调用
数据库
4,011
社区成员
39,817
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章