Вопрос

Я хочу сделать что-то на C99 одним способом, в противном случае выполнить это другим способом.Что такое #define чтобы проверить?

#ifdef C99
...
#else
...
#endif
Это было полезно?

Решение

Не существует конкретного #define ценность.Просто проверь __STDC_VERSION__ и определите это сами!;-)

#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

Редактировать: Более общий фрагмент, отсюда.Я только что изменил определенные имена, на всякий случай, если вы будете часто использовать их в коде:

#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

Другие советы

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

Изменение == Для >= если вы хотите протестировать для C99 и более поздних версий.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top