Después de la creación de SDL algunos problemas, descubrí que SDL define una macro que reemplaza principal:¿Por qué SDL define la macro principal?
#define main SDL_main
// And then
extern C_LINKAGE int SDL_main(int argc, char *argv[]);
Esto también puede crear errores de compilación, si la función principal no tiene los argc
y argv
parámetros definidos .
Este macro me da dolores de cabeza justo cuando lo veo ... ¿Por qué SDL necesita redefinir main? Después de buscar un poco más, encontré que algunas personas #undef main
, y lo utilizan de la manera normal.
Así que esta es la pregunta:por qué SDL necesita redefinir main, ¿qué hace? ¿Hay algún efecto secundario al no definirlo?
Una cosa que noté es que SDL redirige la salida estándar y el error a los archivos (y no quiero este comportamiento), y este comportamiento se detiene si no defino main.
Casi todas las bibliotecas requieren inicialización, pero esto parece una mala práctica para saber cómo hacerlo. +1 de todos modos. –
@DavidGrayson una práctica muy pobre de hecho, especialmente si tiene dos bibliotecas que hacen esto ... dolor masivo en la patootía –
¿Puedo escribir mi propia implementación de main(), en lugar de usar esta extraña función SDL_main()? Hay algunas cosas (por ejemplo, redirección de stdout) que son como empujadas por mi garganta, y no lo quiero. – Tibi