【C++进阶】__stdcall 详解
__stdcall用来修饰函数,被该关键字修饰的函数,其参数都是从右向左依次被压入到栈中,函数调用在返回前需要清理堆栈,被调函数在返回前负责清理堆栈。
函数调用约定
函数调用约定主要约束了两件事:
1. 参数传递的顺序
2. 调用堆栈由谁(调用函数或被调用函数)负责清理
__stdcall是函数调用约定的一种。__stdcall表示:
1. 参数从右向左压入堆栈(这样当函数参数出栈时,刚好是先拿到最左边的参数)
2. 函数被调用者修改堆栈,负责清理自己在堆栈中的参数
3. 函数名(在编译器层次)自动加前导下划线,后面紧跟着一个@符号,其后紧跟着参数的尺寸。因此,声明为 int
func( int a, double b ) 的函数修饰如下所示:_func@12