函数的调用约定

1._cdecl,C Declaration的缩写,是C和C++默认的调用方法
所有参数从右到左依次入栈,这些参数由调用者清除,称为手动清栈,对于传递参数的内存栈是由调用者来维护的(实现可
变参数的函数只能使用该调用约定)。被调用函数无需要求调用者传递多少参数
每个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用_stdcall函数的大,VC将函数编译后在函
数名的前面加上下划线前缀
2._stdcall是Standard Call的缩写,是C++的标准调用方式
所有参数从右向左依次入栈,如果是调用类成员的话,最后一个入栈的是this指针,这些堆栈中的参数由被调用函数在返
回后清除,成为自动清栈,函数在编译的时候必须确定参数个数,调用者必须严格的控制参数的生成方式,VC将函数编译
后会在函数名前面加上下划线前缀,在函数名后加"@"和参数的字节数
3._fastcall,特点是快,通过寄存器来传送参数的,VC将编译后的函数名前面加上"@"前缀,在函数名后面加上"@"和参数
的字节数
4._thiscall,仅用于C++成员函数,this指针存放在CX寄存器,参数从右向左,

posted on 2014-03-11 20:17  DaMengZhang  阅读(199)  评论(0编辑  收藏  举报