После некоторой проблемы с настройкой SDL я обнаружил, что SDL определяет макрос, который заменяет main:
#define main SDL_main
// And then
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
Это также может создавать ошибки компиляции, если основная функция не имеет параметров argc
и argv
.
Этот макрос дает мне головные боли только тогда, когда я вижу это... Почему SDL необходимо переопределить главную? После некоторого поиска я обнаружил, что некоторые люди #undef main
и используют его обычным способом.
Итак, вот вопрос: почему SDL необходимо переопределить main, что он делает? Есть ли какие-либо побочные эффекты для его определения?
Одна вещь, которую я заметил, это то, что SDL перенаправляет стандартный вывод и ошибку в файлы (и я не хочу этого поведения), и это поведение останавливается, если я не могу определить основной.