为使用 CRT 的 Windows 程序定义UNICODE独立函数的正确方法是什么?WinMain
我倾向于认为它应该是这样的
WINAPI
#ifdef UNICODE
wWinMain
#else
WinMain
#endif
( ... ) {
...
}
但是,我想知道在编译源单元时是否还没有预定义的宏可以扩展为正确的符号(就像 Windows 头文件中提供的扩展为WinApiFuncA或WinApiFuncW.
在<tchar.h>中,宏_tWinMain扩展到WinMain 或wWinMain取决于项目设置。但是,这还不够;您还需要lpCmdLine使用不可知字符集声明第三个参数 ( ) LPTSTR:
int APIENTRY _tWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nShowCmd
)
如果在项目上启用了 Unicode,这将变为LPWSTR,并给出签名:
int APIENTRY wWinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPWSTR lpCmdLine,
int nShowCmd
)
如果未启用 Unicode,您将获得签名:
int APIENTRY WinMain(
HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nShowCmd
)