Почему 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.

Ответы на вопрос(2)

Ваш ответ на вопрос