在设置 SDL 遇到一些麻烦后,我发现 SDL 定义了一个宏来替换 main:
#define main SDL_main
// And then
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
如果主函数没有定义argc
andargv
参数,这也会产生编译错误。
这个宏一看到就头疼……为什么SDL需要重新定义main?经过一番搜索,我发现有些人#undef main
,并以正常方式使用它。
那么问题来了: 为什么 SDL 需要重新定义 main,它的作用是什么?取消定义有副作用吗?
我注意到的一件事是 SDL 将标准输出和错误重定向到文件(我不希望这种行为),如果我取消定义 main.