c/c++函数调用约定
2013-04-19 21:16
357 查看
调用方式 | 参数传递顺寻 | 清理堆栈 | 支持变长参数 | 使用对象 | 函数名修饰 (Name-decoration convention) | 其他 |
__cdecl | 从右至左 | 调用者 | 支持 | C/C++默认调用方式 | 函数名前加下划线如函数main修饰成_main | 生成的代码比stdcall大,因为其要求每个函数调用包含清理堆栈的代码 |
__stdcall | 从右至左 | 被调用者 | 不支持 | Win32 API和dll中导出函数使用 | 下划线开头,函数名,然后@符号,最后是参数的总byte数。如:int f(int a, double b ),名字为_f@12 | |
__fastcall | 先放入EDX和ECX中,在从右至左 | 被调用者 | 不支持 | 以@开头,函数名,然后@符号最后是参数的总byte数,如:@f@12 | 快速传参,即快速调用 | |
thiscall | 从右至左,this指针放ECX中 | 被调用者 | 不支持 | C++成员函数专用,用来支持this指针 |