我想开始学习windows api,所以我查看了一些教程,并立即注意到main函数似乎返回了多个值。
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PWSTR pCmdLine, int nCmdShow);
这一切意味着什么?不应该是int WinMain
或WINAPI WinMain
,而不是两者都是吗?
答案 0 :(得分:5)
WINAPI
是一个扩展为__stdcall
的宏。它指定调用约定,而不是返回类型。返回类型仍为“int”
答案 1 :(得分:0)
为了让C ++编译器有效地定位Windows,对标准C ++进行了一些扩展。
其中一个是WINAPI
,它在Win32中扩展为__stdcall
。这是一个非标准的编译器指令,它告诉编译器从左到右传递参数(为了与VBA兼容等)。从技术上讲,它被称为调用约定。
因此它与返回类型无关,因此您仍需要编写显式返回类型。
(请注意,在Win64中,Microsoft完全免除了__stdcall
,因此将WINAPI定义为空白。)