_stdcall, _cdecl的用法与区别

①_stdcall调用

_stdcall调用是Pascal程序的缺省调用方式,此种调用采用参数从右到左的压栈方式,被调用函数自身在返回前清空堆栈。Windows API 都采用这种调用方式(#define WINAPI _stdcall)。

如果按照C编译方式,输出函数名前面加上下划线,后面加上符号@和参数的字节数。


②_cdecl调用

_cdecl调用是C/C++的缺省调用方式,参数采用从右到左的压栈方式,参数的栈内存由调用者维护。_cdecl函数只能被C/C++调用,调用函数中包含清空栈内存的代码,所以调用_cdecl函数生成的执行文件会比调用_stdcall函数生成的执行文件大。

由于_cdecl的参数内存栈由调用函数维护,所以变长参数的函数只能为_cdecl调用。

VC++默认采用_cdecl调用方式。

按C编译方式,仅仅在输出函数名前加上下划线。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值