__cdecl是c/c++和mfc程序默认使用的调用约定,也可以在函数声明时加上__cdecl关键字来手工指定。采用__cdecl约定时,函数参数按照从右到左的顺序入栈,并且由调用函数者把参数弹出栈以清理堆栈。因此,实现可变参数的函数只能使用该调用约定。由于每一个使用__cdecl约定的函数都要包含清理堆栈的代码,所以产生的可执行文件大小会比较大。__cdecl可以写成_cdecl。
下面将通过一个具体实例来分析__cdecl约定:
在vc++中新建一个win32 console工程,命名为cdecl。其代码如下:
int __cdecl add(int a, int b); //函数声明
void main()
{
add(1,2); //函数调用
}
int __cdecl add(int a, int b) //函数实现
{