这些论据有什么用?还有其他方法可以在不使用 main 中的参数的情况下运行 SDL 吗?
int main( int argc, char* args[] )
Run Code Online (Sandbox Code Playgroud)
让我解释。
在通常的程序中,您可以使用以下两种有效形式之一main:
int main()
int main(int argc, char **argv) // arguments' names do not matter here
Run Code Online (Sandbox Code Playgroud)
它们之间的区别在于第二种形式允许您的程序采用命令行参数。
main相关 hack。
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);
}
Run Code Online (Sandbox Code Playgroud)
它显示了为什么您可以使用int main(). SDL 源代码没有原型,int SDL_main()因为 C 不支持函数重载。只能有一个原型SDL_main,SDL 开发人员决定应该如此int SDL_main(int, char **)。
原因很明显:许多应用程序需要使用命令行参数。许多程序员习惯于在工作int main(int, char **)时读取命令行参数。