【发布时间】:2011-01-08 02:55:30
【问题描述】:
我想以一种方式在 C99 中做某事,否则以另一种方式执行。要检查的 #define 是什么?
#ifdef C99
...
#else
...
#endif
【问题讨论】:
-
术语挑剔:新手称之为#define,大师称之为macro或(macro identifier,当他们专门提到应该被替换)。
我想以一种方式在 C99 中做某事,否则以另一种方式执行。要检查的 #define 是什么?
#ifdef C99
...
#else
...
#endif
【问题讨论】:
#if __STDC_VERSION__ == 199901L
/* C99 */
#else
/* not C99 */
#endif
如果您想测试 C99 及更高版本,请将 == 更改为 >=。
【讨论】:
没有特定的#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
编辑:更一般的 sn-p,from here。我刚刚更改了定义的名称,以防您在代码中大量使用它们:
#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
【讨论】: