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 main
i 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.