2012-04-05 12 views
44

में मैं ग्रहण हेलीओस चला रहा हूं और मेरे पास g ++ - 4.6 स्थापित है। उम्मीद है कि मैं गलत नहीं हूं कि g ++ 4.6 सी ++ 11 सुविधाओं को लागू करता है। मैंने एक सी ++ प्रोजेक्ट बनाया है जो नलप्टर और ऑटो कीवर्ड का उपयोग करता है। निर्माण निम्नलिखित त्रुटियों को देता है: -सी ++ त्रुटि 'नलप्टर को इस दायरे में घोषित नहीं किया गया था' ग्रहण आईडीई

../{filename}.cpp:13:13: error: ‘nullptr’ was not declared in this scope 

../{filename}.cpp:14:2: warning: ‘auto’ will change meaning in C++0x; please remove it [-Wc++0x-compat] 

दरअसल यह कल तक ठीक से निर्माण कर रहा था। मैं इन्हें कहीं से कहीं नहीं मिल रहा हूं। कृपया इस समस्या को हल करने में मेरी मदद करें।

+0

जी ++ का सटीक संस्करण क्या है और आप किस संकलन विकल्प का उपयोग कर रहे हैं? –

+1

कृपया एक कोड नमूना पोस्ट करें जो इस व्यवहार को प्रदर्शित करता है, इसके बिना हम यहां चाय की पत्तियों को पढ़ने की कोशिश कर रहे हैं। –

+0

मैं जी ++ 4.6 का उपयोग कर रहा हूं, और इस तरह के कोड की लाइनों की कल्पना करें: - int * ptr = nullptr; ऑटो एक्स = 123; –

उत्तर

16

अंत में पता चला कि क्या करना है। प्रोजेक्ट गुणों के तहत -std = C++ 0x कंपाइलर तर्क जोड़ा गया -> सी/सी ++ बिल्ड -> सेटिंग्स -> जीसीसी सी ++ कंपाइलर -> विविध। यह अब काम करता है!

लेकिन सभी सी ++ परियोजनाओं के लिए डिफ़ॉल्ट रूप से इस ध्वज को कैसे जोड़ना है? कोई?

+0

क्या आपने विंडो -> प्राथमिकताएं -> सी/सी ++ -> बिल्ड -> सेटिंग्स में देखा था? – josephthomas

+1

मेरे पास यह विकल्प दुख की बात नहीं है। – user592748

+0

मैं इस स्थिति को सेमेक के साथ कैसे संभाल सकता हूं? – UserK

4

क्या यह एक वास्तविक संकलक त्रुटि या कोड विश्लेषण त्रुटि है? कुछ बार कोड विश्लेषण थोड़ा स्केची हो सकता है और गैर-मान्य त्रुटियों की रिपोर्ट करता है।

प्रोजेक्ट के लिए कोड विश्लेषण बंद करने के लिए, प्रोजेक्ट एक्सप्लोरर में अपनी प्रोजेक्ट पर राइट क्लिक करें, गुणों पर क्लिक करें, फिर सी/सी ++ सामान्य टैब पर जाएं, फिर कोड विश्लेषण। फिर "प्रोजेक्ट सेटिंग्स का उपयोग करें" पर क्लिक करें और उन लोगों को अक्षम करें जिन्हें आप नहीं चाहते हैं।

इसके अलावा, क्या आप वाकई सी ++ 11 कंपाइलर के साथ संकलित कर रहे हैं?

+2

डाउनवोट का मुकाबला करने के लिए उपरोक्त। यह लगभग निश्चित रूप से समस्या है। –

+0

धन्यवाद। मैंने इस मुद्दे को कई बार चलाया है, इसलिए मैंने सोचा कि यह उल्लेखनीय है। – josephthomas

+0

मुझे अपने ग्रहण परियोजना गुणों में सी/सी ++ सामान्य टैब के तहत एक कोड विश्लेषण आइटम नहीं दिख रहा है। मैं जी ++ 4.6 का उपयोग कर रहा हूँ। उम्मीद है कि सी ++ 11 विशेषताओं, विशेष रूप से nullptr और ऑटो लागू करता है। धन्यवाद। –

43

GCC page for C++11 के अनुसार:

, C++ 0x समर्थन सक्षम करने के लिए अपने छ ++ कमांड लाइन करने के लिए कमांड लाइन पैरामीटर -std = C++ 0x जोड़ें। या, सी ++ 0x एक्सटेंशन के अतिरिक्त जीएनयू एक्सटेंशन को सक्षम करने के लिए, अपनी g ++ कमांड लाइन में add -std = gnu ++ 0x जोड़ें। जीसीसी 4.7 और बाद में समर्थन -स्टडी = सी ++ 11 और -स्टडी = gnu ++ 11 भी।

क्या आपने -std=gnu++0x के साथ संकलित किया था?

+2

मैंने -std = gnu ++ 0x और -std = C++ 0x कमांड लाइन पैरामीटर जोड़ने की कोशिश की लेकिन एक ही समस्या हो रही है। मैंने इसे परियोजना गुणों -> सी/सी ++ बिल्ड -> डिस्कवरी विकल्प -> कंपाइलर आमंत्रण तर्क के तहत जोड़ा। क्या यह सही जगह है? –

+0

शायद, लेकिन ऐसा लगता है कि दूसरे उत्तर वास्तविकता में अधिक आधार पर हैं। :) –

+0

हाय रोब, मैंने अब एक बात देखी है। आईडीई कंपाइलर तर्क -std = C++ 0x नहीं उठाता है हालांकि मैंने इसे प्रोजेक्ट प्रॉपर्टीज -> सी/सी ++ बिल्ड -> डिस्कवरी विकल्प -> कंपाइलर इनवोकेशन तर्कों के तहत जोड़ा है। तो मैंने टर्मिनल में कमांड लाइन बिल्ड 'g ++' ../CPP.cpp "-std = gnu ++ 0x -std = C++ 0x 'की कोशिश की और यह ठीक से संकलित करता है; बाइनरी उत्पन्न करता है, जो सफलतापूर्वक चलता है। तो आईडीई निर्दिष्ट संकलक विकल्प पर विचार नहीं करता है। उत्पन्न मेकफ़ाइल संकलक तर्क -std = C++ 0x सहन नहीं करता है। सुनिश्चित नहीं है कि कंपाइलर तर्क प्रदान करने के लिए आईडीई को कैसे बल देना है! –

0

आप जी ++ 4.6 संस्करण का उपयोग कर रहे हैं आप झंडा -std आह्वान चाहिए = C++ 0x संकलित करने के लिए

जी ++ -std = C++ 0x * सीपीपी -ओ उत्पादन

3

सेटिंग में जाएं -> संकलक ... और करने के लिए फ्लैग जोड़ने "है जी ++ आ C++ 0x आईएसओ सी पालन ++ भाषा मानक [एसटीडी = C++ 0x]

0

मैं जोड़ने", -std = सी ++ 0x "के बाद" -c -fmessage-length = 0 ", प्रोजेक्ट गुणों के अंतर्गत -> सी/सी ++ बिल्ड -> सेटिंग्स -> जीसीसी सी ++ कंपाइलर -> विविध। अल्पविराम के रूप में अल्पविराम को जोड़ने के लिए मत भूलना।

0

जीसीसी के एक अलग संस्करण के साथ प्रयास करने के लिए मेरे लिए काम किया - मेरे मामले में जीसीसी 4.9।

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