Estoy compilando mi programa que se ejecutará en linux gcc 4.4.1 C99.diferencia entre #if defined (WIN32) y #ifdef (WIN32)
Estaba poniendo mis #defines para separar el código que se compilará en Windows o Linux. Sin embargo, obtuve este error.
error: macro names must be identifiers.
Utilizando este código
#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Sin embargo, cuando cambié a este error se fijó:
#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
Me preguntaba por qué tengo ese error y por qué el #defines ¿son diferentes?
Muchas gracias,
sí, pero también podría poner en cascada #ifdef UNIX con #ifndef WIN32, y obtener la misma flexibilidad (no tan legible, estoy de acuerdo) – jpinto3912
@ jpinto3912 Pero eso se pone aún más peludo con '||' – Aidiakapi
Si tan solo hubieran tenido ido con '#if defined (NAME)' desde el principio y evitó crear una declaración '# ifdef'. – Andy