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