关于签名:int WINAPI WinMain(HINSTANCE p1,HINSTANCE p2,LPSTR p3,int p4)

use*_*729 1 c winapi

为什么可以WinMain有两种返回类型?

如果我删除它,将报告此警告:

warning C4007: 'WinMain' : must be '__stdcall'
Run Code Online (Sandbox Code Playgroud)

或者我WINAPI错误地读了int ?

UPDATE

我尝试了这两个变种,据说是相同的WINAPI,没有工作:

int __declspec WinMain

int __declspec(stdcall) WinMain 
Run Code Online (Sandbox Code Playgroud)

CB *_*ley 6

WINAPI它不是一个返回类型,它是一个宏扩展到函数的特定于实现的装饰或属性.在这个实例中,它指定了调用约定并且等效于__stdcall.

在语法上,WINAPI大致(但不完全)等同于存储类说明符static.

  • 所有平台都有一个调用约定.有些人有选择特定调用约定的方法(如windows); 其他人只支持单个调用约定,因此它从未在代码中提及或指定. (2认同)