1. 下面的表格总结了Win32函数调用方式的异同

2. 针对下面的代码片段

1)使用__cdecl调用约定将生成如下的汇编代码
2)使用__stdcall调用约定将生成如下的汇编代码

3)使用__fastcall调用约定将生成如下的汇编代码

3. 几点说明
1)__stdcall(#define WINAPI __stdcall)是WIN32 API的默认调用方式;
2)在使用__stdcall调用方式时,因为是被调用者负责清理堆栈,所以该方式不能应用在可变参数的函数中,比如prinf(),因为被调用者不知道确切参数的大小。如果要定义可变参数的函数, 要使用__cdecl的调用方式。
本文对比了Win32中三种不同的函数调用约定:__cdecl、__stdcall及__fastcall,并通过具体代码示例展示了它们如何影响汇编代码的生成。文章特别指出__stdcall作为Win32 API默认调用方式的限制及其不适合用于可变参数函数的原因。
3240

被折叠的 条评论
为什么被折叠?



