Is there a #define for C99?

前端 未结 2 1151
我在风中等你
我在风中等你 2020-12-14 08:36

I want to do something in C99 one way, otherwise to perform it another way. What is the #define to check for?

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


        
相关标签:
2条回答
  • 2020-12-14 08:50
    #if __STDC_VERSION__ == 199901L
    /* C99 */
    #else
    /* not C99 */
    #endif
    

    Change == to >= if you want to test for C99 and later.

    0 讨论(0)
  • 2020-12-14 09:01

    There is not an specific #define value. Just check __STDC_VERSION__ and define it yourself! ;-)

    #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
    

    EDIT: A more general snippet, from here. I've just changed the defined names, just in case you'll use them a lot on the code:

    #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
    
    0 讨论(0)
提交回复
热议问题