可参考表格形式http://blog.csdn.net/hollyhock13/article/details/2770865
0 函数调用约定解决的就是 主调函数如何保存函数中的若干个实参,如何恢复堆栈。
1 __cdecl调用方式(C语言默认调用方式)
1、由主调函数从右向左把被调函数的实参压入栈。
2、由主调函数恢复被调函数的堆栈。
3、由主调函数管理堆栈,可以实现变参函数。
4、命名修饰方法是在函数前加一个下划线。如_ShowProcess
2 __stdcall调用方式(即WINAPI,CALLBACK,PASCAL)
1、由主调函数从右向左把被调函数的实参压入栈。(同__cdecl)
2、由被调函数弹出堆栈中的参数,并恢复堆栈。(与__cdecl的区别)
3、正规,不缺省,适用于大多数API函数,主调函数会先压栈,然后api自己恢复堆栈
4、命名修饰方法在函数前加一个下划线(_),在函数名后有符号(@),在@后面紧跟参数列表中的参数所占字节数(10进制),如:void Input(int &m,int &n),被修饰成:_Input@8
3、__fastcall调用方式规定参数从右到左传递,前两个或若干个参数由寄存器传递,剩余参数压栈出栈方式如___stdcall。