vc++调用约定 Calling Conventions |
- __cdecl 参数从右往左依次入栈,调用者清理堆栈,返回值保存在eax寄存器中
- __stdcall 参数从右往左依次入栈,被调用者清理堆栈,返回值保存在eax寄存器中
- __fastcall 前两个DWORD或位数小于DWORD的参数分别通过ecx,edx传递,其余参数从右往左依次入栈,被调用者清理堆栈,,返回值保存在eax寄存器中
- __thiscall 用于没有可变参数列表的C++类成员函数,参数从右往左依次入栈,this指针通过ecx寄存器传递,返回值保存在eax寄存器中;有可变参数列表的C++类成员函数使用__cdecl调用约定,所有参数从右往左依次入栈,this指针最后入栈,返回值保存在eax寄存器中。在Visual C++ 2005以前的版本中不能显示使用__thiscall调用约定。