Warum definiert SDL das Hauptmakro?

Nachdem ich Probleme beim Einrichten von SDL hatte, stellte ich fest, dass SDL ein Makro definiert, das main ersetzt:

#define main SDL_main

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

Dies kann auch zu Kompilierungsfehlern führen, wenn die Hauptfunktion das nicht hatargc undargv Parameter definiert.

Dieses Makro bereitet mir nur dann Kopfschmerzen, wenn ich es sehe ... Warum muss SDL main neu definieren? Nach einigem Suchen fand ich einige Leute#undef main, und verwenden Sie es wie gewohnt.

Das ist also die Frage: Warum muss SDL main neu definieren, was macht es? Gibt es irgendwelche Nebenwirkungen, wenn man die Definition aufhebt?

Eine Sache, die mir aufgefallen ist, ist, dass SDL die Standardausgabe und Fehler in Dateien umleitet (und ich möchte dieses Verhalten nicht) und dieses Verhalten stoppt, wenn ich main nicht definiere.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage