Dlaczego SDL definiuje główne makro?

Po kłopotach z ustawieniem SDL dowiedziałem się, że SDL definiuje makro, które zastępuje główne:

#define main SDL_main

// And then
extern C_LINKAGE int SDL_main(int argc, char *argv[]);

Może to również powodować błędy kompilacji, jeśli główna funkcja nie maargc iargv zdefiniowane parametry.

To makro przyprawia mnie o ból głowy, gdy go widzę ... Dlaczego SDL musi przedefiniować główne? Po dalszych poszukiwaniach okazało się, że niektórzy ludzie#undef maini używaj go w normalny sposób.

To jest pytanie: dlaczego SDL musi przedefiniować główne, co to robi? Czy są jakieś skutki uboczne w jej niezdefiniowaniu?

Jedną z rzeczy, które zauważyłem, jest to, że SDL przekierowuje standardowe wyjście i błąd do plików (i nie chcę tego zachowania), a to zachowanie zatrzymuje się, gdy zdefiniuję główne.

questionAnswers(2)

yourAnswerToTheQuestion