C++中的常见函数调用约定 (__stdcall, __fastcall, __pascal, __cdecl等)
C,C++中有函数调用约定的这种说法,什么是函数调用约定呢? =》 函数调用约定主要约束了两件事情:
1. 参数传递的顺序
2. 调用堆栈由哪一方来进行清理 (调用函数还是被调用函数)来进行清理
__stdcall就是函数调用约定中的一种,__stdcall来表示:
第1点: 函数的参数是从右向左压入堆栈 (这样当函数参数出栈时,刚好是先拿到最左边的参数)
第2点: 被调用函数来负责清理堆栈,也就是说它负责清理自己在堆栈中的参数
第3点: 函数名在编译器层次会自动加前导下划线,后面紧跟着一个@符号,后面再跟着参数的尺寸(参数的字节数). 比如 函数 int func(int a, int b)的函数修饰是 _func@8
在win32应用程序中,宏 APIENTRY, WINAPI 都表示 _stdcall, 非常常见, 比如 #define WINAPI _stdcall
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧