C++ 函数调用约定
时间: 2024-01-11 09:19:35 浏览: 270
C++函数调用约定是指在编译器编译函数时,函数的参数如何被压入堆栈,返回值如何从堆栈中弹出等规则。常见的C++函数调用约定有三种:stdcall、cdecl和thiscall。
stdcall是一种被广泛使用的函数调用约定,它要求被调用的函数自己清理堆栈。stdcall约定的函数参数是从右往左依次压入堆栈中的,返回值通常存放在EAX寄存器中。
cdecl是C/C++默认的函数调用约定,它要求调用者清理堆栈。cdecl约定的函数参数也是从右往左依次压入堆栈中的,返回值通常存放在EAX寄存器中。
thiscall是一种微软的函数调用约定,它用于成员函数的调用。thiscall约定的函数参数是从右往左依次压入堆栈中的,返回值通常存放在EAX寄存器中,同时this指针会被压入ECX寄存器中。
下面是一个使用stdcall约定的C++函数的例子:
```cpp
#include <iostream>
using namespace std;
// 声明使用stdcall约定
int __stdcall add(int a, int b);
int main() {
int a = 1, b = 2;
int sum = add(a, b);
cout << "sum = " << sum << endl;
return 0;
}
// 定义使用stdcall约定
int __stdcall add(int a, int b) {
return a + b;
}
```
阅读全文