2010-01-22 66 views
21

我想用C99做一些事情,否则以另一种方式执行。什么是#define检查?C99有#define吗?

#ifdef C99 
... 
#else 
... 
#endif 
+1

术语挑剔:新手叫什么的#define,大师们称之为*宏*或(*宏标识符*当它们特别指代应该替换的东西时)。 – Jens 2011-10-02 19:01:40

回答

32

没有具体的#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 

编辑:更一般的片断,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 
# endif 
#endif 
+0

现在可能会为C11添加一个测试。 – chux 2017-11-29 17:34:32

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

变化==>=如果你想测试C99及更高版本。