我一直在阅读SFML的源代码。我发现了它以这样的方式包装win32的方式:
#ifdef _WIN32 //something like that
#include <windows.h>
extern int main(int argc, char* argv[]);
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, INT)
{
return main(__argc, __argv);
}
#endif
所以CCD_ 1我看到了这个典型的win32程序条目。但是extern main
和return main(__argc, __argv)
在做什么?
带下划线的__argc
是什么?
在我自己的主函数中,在加载SFML之后,我只需要编写int main()
。
我很好奇这在编写跨平台代码方面是如何工作的。(我在win32代码中使用了同样的方式,它成功了!!有人能解释一下这背后的魔力吗??(
extern main
和return main(__argc, __argv)
在做什么?
如果您在windows平台上编译,SFML会为您定义WinMain入口点,并使用__argc
和line 4
0调用main(int argc, char* argv[])
,相关文档对此进行了解释:
__argc
全局变量是命令行数量的计数传递给程序的参数。__argv
是指向包含程序参数。
SFML做到了这一点,使开发人员即使在Win32应用程序项目中也可以使用标准的主函数,从而保留可移植的代码。SFML/MainWin32.cpp中的注释对此进行了解释。