2010-08-29 13 views
9

मैं इसे पढ़ने में थोड़ा परेशान हूं: Gcc 4.5 online manual --- Standards sectionजी ++ मानकों का समर्थन

वे समझाने इस

मूल आईएसओ सी ++ मानक आईएसओ मानक (आईएसओ/आईईसी 14882: 1998) के रूप में प्रकाशित किया गया था और एक तकनीकी शुद्धिपत्र 2003 (आईएसओ/आईईसी 14882: 2003) में प्रकाशित द्वारा संशोधित। इन मानकों को क्रमशः सी ++ 98 और सी ++ 03 के रूप में जाना जाता है। जीसीसी सी ++ 98 के बहुमत को लागू करता है (निर्यात एक उल्लेखनीय अपवाद है) और सी ++ 03 में अधिकांश बदलाव।

लेकिन वे यह नहीं बताते कि क्या जीसीसी 'नंगे' 98 सी ++ या केवल सही सी ++ 03 का समर्थन करता है या नहीं। 'सी भाषा' अनुभाग में स्पष्टीकरण और अधिक स्पष्ट है: 1999 आईएसओ सी मानक में

त्रुटियाँ तीन तकनीकी शुद्धिपत्र में सही किया गया 2001, 2004 और 2007 में प्रकाशित जीसीसी uncorrected संस्करण का समर्थन नहीं करता।

तो मेरा सवाल यह है: क्या यह जी ++ (अनिश्चित मानक का कोई समर्थन नहीं) के मामले में भी है?

केवल 4 विकल्पों में एक ग्राम का चयन करने के ++ मानक तो हैं -std=c++98, -std=gnu++98, -std=c++0x, और -std=gnu++0x। क्या वो सही है ?

और अंतिम सबक्वेस्टियन: -ansi विकल्प तब क्या है? क्या यह केवल सी मोड में प्रयोग किया जाता है?

संपादित करें:

-std = C89 के लिए एक पर्याय -ansi (सी के लिए) या -std = C++ 98

+1

* क्यों * आप अनिश्चित मानक का समर्थन करना चाहते हैं? –

+0

यह जांचने का एक प्रश्न था कि क्या मैं सी ++ 98, सी ++ 03, आदि और जीसीसी दस्तावेज़ के बीच संबंधों को सही ढंग से समझता हूं; एक "मैं चाहता हूं" नहीं। –

+0

ध्यान दें कि सी ++ 03 मानक पाठ और सी ++ 98 टेक्स्ट के बीच मतभेदों का एक महत्वपूर्ण हिस्सा अस्पष्टताओं के स्पष्टीकरण हैं और जैसे - संकलक सी ++ 98 को लागू करने का प्रयास करते समय खोजे गए परिवर्तन। वहां, जीसीसी उचित रूप से सी ++ 98 का ​​समर्थन नहीं कर सका। – MSalters

उत्तर

9

जीसीसी अनिश्चित मानक का समर्थन नहीं करता है, इसका लक्ष्य है (हालांकि 100% तक नहीं पहुंचता है) सी ++ 03 अनुरूपता। तकनीकी रूप से, सी ++ का केवल एक वर्तमान मानक है और टीसी 1 सहित संस्करण यह है। जैसा कि यह कहता है "सी ++ 03 में अधिकांश परिवर्तनों का समर्थन करता है। इस मानक का चयन करने के लिए ... विकल्पों में से एक का उपयोग करें -ansi या -std=c++98"।

मानक के अप्रचलित uncorrected 1998 संस्करण का चयन करने के लिए कोई समर्थन या विकल्प नहीं है।

+0

टीसी 1 और टीआर 1 के बीच क्या अंतर है? –

+2

@ मार्टिन: टीसी 1 मूल रूप से सी ++ 98 का ​​बगफिक्स था जबकि TR1 संभावित लाइब्रेरी एक्सटेंशन पर एक रिपोर्ट थी। दो पूरी तरह से अलग चीजें। – sellibitze

3

कम से कम जहाँ तक मुझे पता है, कोई , सी ++ 03 की नई विशेषताओं (या तो) के समर्थन को "बंद" करने का कोई तरीका नहीं है।

-ansi सी फ्रंट एंड द्वारा मान्यता प्राप्त है। कौन से घटक पहचानते हैं कि कौन से स्विच पहचानते हैं, आप g++ -v --help का उपयोग कर सकते हैं (इससे बहुत अधिक उत्पादन होता है, इसलिए आप आमतौर पर इसे less या उस क्रम पर कुछ पाइप करना चाहते हैं)।

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