2010-01-22 30 views
21

C99'da bir şekilde bir yol yapmak istiyorum, aksi halde başka bir şekilde gerçekleştirmek. Kontrol etmek için #define nedir?C99 için #define var mı?

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

Terminoloji nitpick: yenilere bir #define dediğimiz, gurular a * makro çağırmak * veya (* makro Sadece kod üzerinde onları çok kullanacağız ihtimale karşı tanımlanmış isimleri değiştirdik tanımlayıcı * özel olarak değiştirilmesi gereken şeylere başvurduklarında). – Jens

cevap

32

Belirli bir #define değeri yok. Sadece __STDC_VERSION__'u kontrol edin ve kendiniz tanımlayın! ;-)

#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 

DÜZENLEME: daha genel bir pasajı, 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

Şimdi C11 için bir test eklemekti. – chux

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

Değişim >= için == Eğer C99 ve daha sonra test etmek istiyorsanız.