Domanda

Voglio fare qualcosa in un modo C99, altrimenti per eseguire in un altro modo. Qual è il #define per verificare?

#ifdef C99
...
#else
...
#endif
È stato utile?

Soluzione

Non c'è un valore #define specifica. Basta controllare __STDC_VERSION__ e definire da soli! ; -)

#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

Modifica Un frammento di più generale, da qui . 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
#  if (__STDC_VERSION__ >= 201112L)
#   define C11
#  endif
# endif
#endif

Altri suggerimenti

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

Cambia == a >= se si vuole testare per la C99 e più tardi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top