WinMain()到main()macros中的奇怪错误

/** 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 

有什么问题?

你已经违反了规则: 双下划线被保留用于实现 ! (除其他事项外。)

你根本不能使用__main__main main___Main等,你应该选择其他的东西。

我会建议你做这个工作:

 int main(int argc, char* argv[]) { // main like normal } // defines WinMain, eventually makes call to main() PRO_MAIN; 

对于非Windows应用程序, PRO_MAIN可以简单地扩展为无,程序仍然使用标准的主函数进行编译。 这就是我所做的。