这些论点有什么用? 还有其他方法可以在不使用main中的参数的情况下运行SDL吗?
int main( int argc, char* args[] )
答案 0 :(得分:3)
让我解释一下。
在通常的程序中,您可以使用以下两种有效形式之一main
:
int main()
int main(int argc, char **argv) // arguments' names do not matter here
它们之间的区别在于第二种形式允许程序获取命令行参数。
<小时/> 但SDL使用特殊的main
相关黑客。
SDL在标题中的某处有#define main SDL_main
因此,预处理器会将int main(...)
替换为int SDL_main(...)
。
实际main()
位于SDL代码中的某个位置。它进行了一些初始化,然后调用“main
”(即SDL_main
)。
实际main()
可能如下所示:
extern SDL_main(int, char **);
int main(int argc, char **argv)
{
// SDL initialization
SDL_main(argc, argv);
}
它说明了为什么你可以使用int main()
。 SDL源没有int SDL_main()
的原型,因为C不支持函数重载。 SDL_main
只能有一个原型,SDL开发人员认为它应该是int SDL_main(int, char **)
。
原因很明显:许多应用程序需要使用命令行参数。当许多程序员想要读取命令行参数时,他们习惯使用int main(int, char **)
。