2010-01-22 14 views
21

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 
+1

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

Respuesta

32

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 
+0

Poder agregar una prueba para C11 ahora. – chux

23
#if __STDC_VERSION__ == 199901L 
/* C99 */ 
#else 
/* not C99 */ 
#endif 

Cambio == a >= si quieres probar la C99 y posterior.