例如:
int WINAPI WinMain ( HINSTANCE instance, HINSTANCE prev_instance, PSTR cmd_line, int cmd_show )
Run Code Online (Sandbox Code Playgroud)
WINAPI 是一个如下所示的定义:
#define WINAPI __stdcall
Run Code Online (Sandbox Code Playgroud)
你为什么不能这样做:
int __stdcall WinMain ( HINSTANCE instance, HINSTANCE prev_instance, PSTR cmd_line, int cmd_show )
Run Code Online (Sandbox Code Playgroud)
实际上我认为我的问题是我有点混淆了 typedef 的定义。谁可以给我解释一下这个?该定义的作用是什么?为什么不能在其位置编写 __stdcall ?
因为WINAPI调用约定不保证是__stdcall. WINAPI即使不正确,使用的代码仍然是正确的。
您可以像后面的示例中那样编写该函数,并且它可以正常工作 - 这只是不是一个好的实践,并且无法移植到调用约定是其他内容的平台。