C99有#define吗?

kly*_*nch 22 c macros c99

我想以一种方式在C99中做一些事情,否则以另一种方式执行它.什么#define检查?

#ifdef C99
...
#else
...
#endif
Run Code Online (Sandbox Code Playgroud)

Khe*_*ben 34

没有具体的#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
Run Code Online (Sandbox Code Playgroud)

编辑:一个更通用的片段,从这里开始.我刚刚更改了已定义的名称,以防您在代码中大量使用它们:

#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
Run Code Online (Sandbox Code Playgroud)


Alo*_*hal 23

#if __STDC_VERSION__ == 199901L
/* C99 */
#else
/* not C99 */
#endif
Run Code Online (Sandbox Code Playgroud)

如果要测试C99及更高版本,请更改==>=.