Почему SDL определяет основной макрос?
После некоторых проблем с настройкой SDL я обнаружил, что SDL определяет макрос, который заменяет main:
#define main SDL_main
// And then
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
Это также может привести к ошибкам компиляции, если основная функция не имеетargc
а такжеargv
параметры определены.
Этот макрос вызывает у меня головную боль именно тогда, когда я его вижу ... Почему SDL нужно переопределить main? После еще нескольких поисков я обнаружил, что некоторые люди#undef main
и используйте его обычным способом.
So this is the question: why does SDL need to redefine main, what does it do? Are there any side effects to undefining it?
Одна вещь, которую я заметил, заключается в том, что SDL перенаправляет стандартный вывод и ошибку в файлы (и я не хочу этого поведения), и это поведение прекращается, если я отменяю определение main.