C99有一个#define吗?

23

我想在C99中通过一种方式做某事,否则采取另一种方式。如何使用#define进行检查?

#ifdef C99
...
#else
...
#endif

2
术语细节:新手称为 #define 的东西,专家称之为 或者(当他们特别指的是应该被替换的东西时)宏标识符 - Jens
2个回答

39

没有一个特定的#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

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

如果您想测试 C99 及更高版本,请将 == 更改为 >=


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接