_stdcall, _cdecl的用法与区别

来源:互联网 发布:linux创建文件夹进入 编辑:程序博客网 时间:2024/05/17 01:29

①_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
原创粉丝点击