房山区窦店2019年规划:了解函数调用约定__cdecl和__stdcall
来源:百度文库 编辑:偶看新闻 时间:2024/04/29 00:28:53
函数调用约定__cdecl和__stdcall
1. 参数入栈顺序: 都是自右向左
2. 谁来清栈:__cdecl是由函数的调用者负责清栈空间,而__stdcall是在函数返回前自身清理栈空间
3. 和extern "C"一起对函数名称的影响
extern "C" int __stdcall add1(int a, intb) --> add1@8 extern "C" int add1(int a, intb) --> _add1 extern "C" int __cdecl add1(int a, intb) --> _add1
int __stdcall add1(int a, intb) --> ?add1@@YGHHH@Z int add1(int a, intb) --> ?add1@@YAHHH@Z int __cdecl add1(int a, intb) --> ?add1@@YAHHH@Z
1. 参数入栈顺序: 都是自右向左
2. 谁来清栈:__cdecl是由函数的调用者负责清栈空间,而__stdcall是在函数返回前自身清理栈空间
3. 和extern "C"一起对函数名称的影响
extern "C" int __stdcall add1(int a, intb) --> add1@8 extern "C" int add1(int a, intb) --> _add1 extern "C" int __cdecl add1(int a, intb) --> _add1
int __stdcall add1(int a, intb) --> ?add1@@YGHHH@Z int add1(int a, intb) --> ?add1@@YAHHH@Z int __cdecl add1(int a, intb) --> ?add1@@YAHHH@Z