2011-12-16 34 views
9

क्या कोई प्रीप्रोसेसर परिभाषा है जिसे मैं #ifdef चेक में सी ++ भाषा के विभिन्न संस्करणों को समझने के लिए उपयोग कर सकता हूं?एक प्रीप्रोसेसर # भाषा संस्करण की जांच करने के लिए परिभाषित करें? सी ++ 98/सी ++ 03/सी ++ 11

उत्तर

7

__cplusplus मैक्रो का मान इस उद्देश्य को पूरा करने वाला माना जाता है। दुर्भाग्यवश, जीसीसी ने (4.7 से पहले) इसे हमेशा 1 पर सेट किया है, जिससे इसे इस उद्देश्य के लिए उपयोग करने योग्य बना दिया गया है।

(मूल्यों के लिए सी ++ 11 सी ++ 98/03 के लिए 199711L, और 201103L कर रहे हैं।)

+0

भी समस्या यह है कि मैक्रो असंगत सेट कर दिया जाता है। सी ++ 11 के हिस्सों का समर्थन करने वाले संकलक के लिए मूल्य क्या होना चाहिए? :/ – Xeo

+1

@Xeo: क्लैंग और जीसीसी के लिए '__GXX_EXPERIMENTAL_CXX0X__'। – kennytm

+0

@ केनीटीएम: libstdC++ के साथ। '__GXX_EXPERIMENTAL_CXX0X__' के साथ क्लैंग में परिभाषित नहीं किया गया है। सी ++ 11 अब प्रयोगात्मक नहीं होने पर भी इसे हटाया जाना चाहिए – Dani

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