调用方式 |
参数传递顺寻 |
清理堆栈 |
支持变长参数 |
使用对象 |
函数名修饰 (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指针 |
|
|
本文档根据MSDN整理而成