2010-01-22 58 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及更高版本。