为什么VC6是int PASCAL WinMain 到了VC2008就变成了int APIENTRY _tWinMain

改进了什么地方?这里说的是WIN32 API编程的应用程序入口的
2025-06-27 21:37:29
推荐回答(1个)
回答1:

APIENTRY和PASCAL的定义是一样的:都是__stdcall
APIENTRY名字听起来更高端洋气一点,毕竟PASCAL是人家编程软件的名字

WinMain是入口,声明是
int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmd, INT nShow);
注意那个LPSTR,它是char*
我想你大概听说过什么叫“宽字符”吧?如果是宽字符怎么办呢,有这样一个声明:
int APIENTRY wWinMain(HINSTANCE hInst, HINSTANCE hPrev, LPWSTR szCmd, INT nShow);

然后也许你还听说过既可以编译成本地编码也可以编译成unicode编码的代码写法,比如
TEXT("abc")
可以是"abc" 也可以是 L"abc"

那么你应该能理解_tWinMain是怎么回事:和TEXT那个同理。_tWinMain可以是WinMain也可以是wWinMain