2011-12-23 11 views
11

मैंने जीसीसी 4.6.2 डाउनलोड और बनाया। मुझे लगता है कि सी ++ 11 फीचर्स के लिए, कमांड लाइन विकल्प -std=c++0x अभी भी जरूरी है। ऐसा क्यों है? डिफ़ॉल्ट रूप से इसका समर्थन नहीं करना चाहिए?"-std = C++ 0x" क्यों है g ++ 4.6.2 के लिए अभी भी आवश्यक है?

$ g++ --version 
    g++ (GCC) 4.6.2 
    Copyright (C) 2011 Free Software Foundation, Inc. 
    This is free software; see the source for copying conditions. There is NO 
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 
+1

दिलचस्प सवाल। अन्य कंपाइलर्स (वीसी 10) ने डिफ़ॉल्ट रूप से नई सुविधाओं को शामिल करना चुना। मुझे सच में आश्चर्य है कि उन्होंने यहां अलग-अलग रास्ते क्यों ले लिए। – ereOn

+4

मैं इस तथ्य से अधिक नाराज हूं कि डिफ़ॉल्ट भी '-std = C++ 98' –

+0

यह सरल, बेवकूफ रखें। आप एक और मानक का उपयोग करना चाहते हैं? इसे निर्दिष्ट करें। या हमेशा उपयोग करने के लिए मानक निर्दिष्ट करें। यदि यह आपके स्वाद पर नहीं है, तो एक आईडीई का उपयोग करें जो इसे स्वचालित रूप से कॉन्फ़िगर करेगा। या मेकफ़ाइल अतिरिक्त कॉन्फ़िगरेशन फ़ाइल का पुन: उपयोग करें। – Geoffroy

उत्तर

11

क्योंकि

  • सी ++ 11 केवल 4 महीने पुरानी है और समर्थन है यह पूरा किया जा रहा से दूर है या परीक्षण किया
  • एक बड़ी घोषणा के बिना डिफ़ॉल्ट बदलने के लिए और लोगों के लिए तैयारी चरण अच्छा नहीं है
  • यह स्पष्ट नहीं है कि डिफ़ॉल्ट कभी बदल जाएगा (देखें -std = C99)।
+0

और चलो भूलें कि जीसीसी 4.6 श्रृंखला लगभग 9 महीने पुरानी है, और इससे पहले कि वह 5 महीने से भी कम समय में बड़े बदलाव नहीं कर पाएंगे। (4.6.2 रिलीज पुराना नहीं हो सकता है, लेकिन यह केवल कड़ाई से बग फिक्स है।) – ams

+1

@ams: दरअसल, मैं इसे स्पष्ट रूप से ले रहा था, लेकिन शायद यह उल्लेख करना उपयोगी है। – PlasmaHH

1

मुझे लगता है कि इसे 0x कहा जाता है, यह आपको संकेत देता है। यह भी पूरा नहीं हुआ है (http://gcc.gnu.org/projects/cxx0x.html देखें)

5

पढ़ना जीसीसी वेबसाइट:

Status of Experimental C++0x Support in GCC 4.6

इस प्रकार आप डिफ़ॉल्ट कुछ प्रयोगात्मक नहीं कर सकता। इसके अलावा, यह सी ++ 11 मानक रिलीज से पहले था, और वास्तविक नाम परिभाषित नहीं किया गया था, जो बताता है कि क्यों सी ++ 0x और सी ++ 11 नहीं।

आप जीसीसी 4.7 द्वारा रुचि रखते हैं, यह अभी भी प्रयोगात्मक है:

Status of Experimental C++11 Support in GCC 4.7

2

यह अभी भी जरूरत है, और शायद, निकट भविष्य के लिए इस तरह से रहना होगा क्योंकि C++11 has incompatibilities with C++03। डिफ़ॉल्ट रूप से C++ 11 संकलित करने के लिए G ++ को बदलना बहुत सारे मौजूदा कोड को तोड़ देगा।

+2

वास्तव में नहीं * मौजूदा कोड का बहुत *।समिति ने टूटने वाले मौजूदा कोड की मात्रा को कम करने के लिए एक अच्छा काम किया। –

+2

@ आर। मार्टिनिन्हो फर्नांडीस, कोडर ने इसके विपरीत एक महान काम किया! –

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