【问题标题】:Is there a #define for C99?C99 有#define 吗?
【发布时间】:2011-01-08 02:55:30
【问题描述】:

我想以一种方式在 C99 中做某事,否则以另一种方式执行。要检查的 #define 是什么?

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

【问题讨论】:

  • 术语挑剔:新手称之为#define,大师称之为macro或(macro identifier,当他们专门提到应该被替换)。

标签: c macros c99


【解决方案1】:
#if __STDC_VERSION__ == 199901L
/* C99 */
#else
/* not C99 */
#endif

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-20
      • 1970-01-01
      • 1970-01-01
      • 2012-09-02
      • 1970-01-01
      相关资源
      最近更新 更多