2010-01-22 7 views
21

मैं सी 99 में कुछ करना चाहता हूं, अन्यथा इसे एक और तरीका करने के लिए। जांच के लिए #define क्या है?क्या सी # के लिए # डिफाईन है?

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

शब्दावली nitpick: क्या newbies के एक #define कहते हैं, गुरु एक * मैक्रो फोन * या (* मैक्रो पहचानकर्ता * जब वे विशेष रूप से उस चीज़ को संदर्भित करते हैं जिसे प्रतिस्थापित किया जाना चाहिए)। – Jens

उत्तर

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

अब सी 11 के लिए एक परीक्षण जोड़ना था। – chux

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

बदलें >= को == आप C99 के लिए और बाद में परीक्षण करने के लिए चाहते हैं।

संबंधित मुद्दे