2012-06-15 17 views
19

मेरा कंपाइलर इसे 199711L तक फैलाता है। इसका क्या मतलब है? मैंने पढ़ा है कि __cplusplus> 199711L सी ++ 11 का प्रतीक है। इस मैक्रो के संभावित विस्तार क्या हैं और यह क्या दर्शाता है?विभिन्न कंपाइलरों में __cplusplus निर्देश कैसे परिभाषित किया गया है?

उत्तर

27

199711L वर्ष = 1997 खड़ा है, महीना = 11 (यानी, 1997 के नवंबर) - तिथि जब समिति मानक को मंजूरी दे दी है कि आईएसओ के बाकी जल्दी 1998

में मंजूरी दे दी 2003 मानक, कुछ पर्याप्त बदलाव हुए थे कि समिति (जाहिर है) ने उस मूल्य को अपरिवर्तित छोड़ने का फैसला किया था।

2011 मानक के लिए, यह 201103L, के रूप में परिभाषित किया जाना आवश्यक है (फिर से, वर्ष = 2011, महीने = 03) फिर से जिसका अर्थ है कि समिति मानक के रूप में 2014 के लिए 2011

के मार्च में अंतिम रूप दिया अनुमोदित मानक, इसे 201402 एल के रूप में परिभाषित करने की आवश्यकता है, जैसा उपरोक्त (फरवरी 2014) जैसा ही व्याख्या किया गया है।

2017 मानक के लिए, इसे 201703 एल (मार्च 2017) के रूप में परिभाषित करने की आवश्यकता है।

मूल मानक को मंजूरी मिलने से पहले, कुछ कंपेलरों ने सामान्यतः 0 (या केवल #define __cplusplus जैसी खाली परिभाषा) को परिभाषित करने के लिए परिभाषित करने के लिए परिभाषित किया है। जब उनके सख्त अनुरूपता के लिए पूछा गया, तो कई ने इसे 1 पर परिभाषित किया।

मैं लगभग उल्लेख करने के लिए भूल गया, लेकिन प्राचीन कंपाइलर्स के बारे में एक और बात यह है: __cplusplus के बजाय c_plusplus परिभाषित किए गए कुछ शुरुआती संस्करणों में से कुछ (और शायद इसे कॉपी करने वाले कुछ अन्य) परिभाषित किए गए हैं। मुझे याद नहीं है कि इसे किसी भी सार्थक मूल्य के लिए परिभाषित किया जा रहा है।

+0

2003 एक "तकनीकी संशोधन", वास्तव में नहीं एक मानक था। यह सिर्फ शुरुआत की "टीआर 3" सामग्री जो कभी मानक का हिस्सा नहीं थी। –

+0

@ माइकलजे: ["आईएसओ/आईईसी जेटीसी 1/एससी 22/डब्ल्यूजी 21 ने प्रोग्रामिंग भाषा सी ++ पर मानक आईएसओ/आईईसी 14882: 2003 का उत्पादन किया है। इसे 2003-10- 16. "] (http://www.open-std.org/jtc1/sc22/WG21/docs/standards)। ध्यान दें कि यह एक टीसी (तकनीकी corrigendum) का परिणाम है एक टीआर (तकनीकी रिपोर्ट) नहीं। ए टीआर एक अलग दस्तावेज है, मानक के लिए संशोधन नहीं। –

+0

मैंने यह नहीं कहा कि यह एक टीआर था, मैंने कहा कि उसने टीआर 3 सामग्री पेश की, जो उसने किया। 2003 में प्रकाशित दस्तावेज़ 1 99 8 सेंट था एंडर्ड प्लस सीए यह एक नया सी ++ मानक नहीं था और 1 99 8 के मानक को किसी भी तरह से संशोधित नहीं किया गया था। –

2

इसका मतलब है कि यह 1997 सी ++ मानक (वास्तव में के रूप में सी ++ '98 में जाना जाता है के साथ संगत है के रूप में वे भी यह पुष्टि करने के लिए समय लगा ..

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