Voglio fare qualcosa in C99 in un modo, altrimenti eseguirlo in un altro modo. Che cosa è il #define
da verificare?Esiste un #define per C99?
#ifdef C99
...
#else
...
#endif
Voglio fare qualcosa in C99 in un modo, altrimenti eseguirlo in un altro modo. Che cosa è il #define
da verificare?Esiste un #define per C99?
#ifdef C99
...
#else
...
#endif
Non esiste un valore specifico #define
. Basta controllare __STDC_VERSION__
e definirlo da solo! ;-)
#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 frammento di più generale, from here. Ho appena cambiato i nomi definiti, nel caso in cui lo userete loro un sacco sul codice:
#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
Potrebbe aggiungere un test per C11 ora. – chux
#if __STDC_VERSION__ == 199901L
/* C99 */
#else
/* not C99 */
#endif
Change ==
->=
se si vuole testare per la C99 e versioni successive.
Terminologia nitpick: Che neofiti chiamano una #define, i guru chiamano * macro * o (* macro identificatore * quando si riferiscono specificamente al thingy che dovrebbe essere sostituito). – Jens