/** converts 'WinMain' to the traditional 'main' entrypoint **/
#define PRO_MAIN(argc, argv)\
int __main (int, LPWSTR*, HINSTANCE, int);\
int WINAPI WinMain (HINSTANCE __hInstance, HINSTANCE __hPrevInstance, \
LPSTR __szCmdLine, int __nCmdShow)\
{\
int nArgs;\
LPWSTR* szArgvW = CommandLineToArgvW (GetCommandLineW(), &nArgs);\
assert (szArgvW != NULL);\
return __main (nArgs, szArgvW, __hInstance, __nCmdShow);\
}\
\
int __main (int __argc, LPWSTR* __argv, HINSTANCE __hInstance, int __nCmdShow)
现在,当我在这里使用此代码时:
PRO_MAIN(argc, argv)
{
...
}
我收到错误:
error: conflicting types for '__main'
note: previous declaration of '__main' was here
有什么问题?
答案 0 :(得分:4)
你违反了规则:double-underscores are reserved for implementation! (除其他外。)
您根本无法使用__main
,main__
,_Main
等。您应该选择其他内容。
我建议你做这个工作:
int main(int argc, char* argv[])
{
// main like normal
}
// defines WinMain, eventually makes call to main()
PRO_MAIN;
其中的另一个优点是,对于非Windows应用程序,PRO_MAIN
可以简单地扩展为空,程序仍然可以使用标准主函数进行编译。这就是我的工作。