Quiero hacer algo en C99 de una manera, de lo contrario, realizarlo de otra manera. ¿Cuál es el #define
para verificar?¿Hay un #define para C99?
#ifdef C99
...
#else
...
#endif
Quiero hacer algo en C99 de una manera, de lo contrario, realizarlo de otra manera. ¿Cuál es el #define
para verificar?¿Hay un #define para C99?
#ifdef C99
...
#else
...
#endif
No hay un valor específico de #define
. ¡Simplemente marque __STDC_VERSION__
y defínalo usted mismo! ;-)
#if __STDC_VERSION__ >= 199901L
/* C99 code */
#define C99
#else
/* Not C99 code */
#endif
#ifdef C99
/*My code in C99 format*/
#else
/*My code in C99 format*/
#endif
EDIT: Un fragmento más general, from here. Yo sólo he cambiado los nombres definidos, en caso de que les vamos a usar mucho en el código:
#if defined(__STDC__)
# define C89
# if defined(__STDC_VERSION__)
# define C90
# if (__STDC_VERSION__ >= 199409L)
# define C94
# endif
# if (__STDC_VERSION__ >= 199901L)
# define C99
# endif
# endif
#endif
Poder agregar una prueba para C11 ahora. – chux
#if __STDC_VERSION__ == 199901L
/* C99 */
#else
/* not C99 */
#endif
Cambio ==
a >=
si quieres probar la C99 y posterior.
Terminología nitpick: ¿Qué novatos llaman un #define, los gurús llaman una macro * * o (* macro identificador * cuando se refieren específicamente a la cosa que debe ser reemplazada). – Jens