ग्रहण जूनो / केप्लर / लूना सीडीटी में सी ++ 11 को कैसे सक्षम करें?


85

संपादित करें: यह वास्तव में ग्रहण केपलर के लिए विशिष्ट नहीं है। मुझे ग्रहण जूनो के लिए उसी प्रक्रिया का उपयोग करना था। समस्या यह थी कि इसी प्रश्न का उत्तर देने वाली अन्य पोस्टों में लापता कदम प्रतीत होते हैं।

मैं C ++ के लिए एक्लिप्स केपलर का उपयोग कर रहा हूं और मैं C ++ 11 का उपयोग करने की कोशिश कर रहा हूं और त्रुटियां हो रही हैं। जब मैं संकलित करता हूं तो मुझे त्रुटि मिलती है

त्रुटि: श्रेणी-आधारित-छोरों को C ++ 98 मोड में अनुमति नहीं है

मैंने पोस्ट से निर्देशों का पालन किया है

CDT C ++ 11 / C ++ 0x का समर्थन ग्रहण करें

और ग्रहण जूनो के लिए दिया गया समाधान काम नहीं कर रहा है।

विभिन्न टिप्पणियों ने ग्रहण को फिर से शुरू करने और सफाई और पुनर्निर्माण का सुझाव दिया है। इससे कोई फर्क नहीं पड़ा है।

जवाबों:


183

आपको दो काम करने होंगे, पहले आपको अपने कंपाइलर को सेटअप करना होगा, उसके बाद आपको सीडीटी के भाषा प्रोसेसर को सेटअप करना होगा। चूंकि आपने उल्लेख नहीं किया है कि आप किस कंपाइलर का उपयोग कर रहे हैं, इसलिए मैं मान लूंगा कि यह जीसीसी है लेकिन अन्य कंपाइलर के लिए चरण समान होंगे। (ध्यान दें कि आपको एक संकलक की आवश्यकता है जो निश्चित रूप से C ++ 11 का समर्थन करता है।)

कंपाइलर सेट करना काफी सरल है:

  1. अपनी परियोजना पर राइट क्लिक करें और गुण पर क्लिक करें
  2. C / C ++ बिल्ड के तहत सेटिंग क्लिक करें
  3. GCC C ++ कंपाइलर के अंतर्गत, विविध पर क्लिक करें
  4. अन्य झंडे बॉक्स में, टोकन की सूची में "-std = c ++ 11" संलग्न करें।
  5. अप्लाई पर क्लिक करें और ओके करें

इस बिंदु पर आपको अपनी परियोजना का पुनर्निर्माण करने और इसे चलाने के लिए प्राप्त करने में सक्षम होना चाहिए। लेकिन सीडीटी अभी भी सी ++ 11 के लिए त्रुटियां दिखा सकता है। यहां बताया गया है कि आप कैसे इसका समाधान कर सकते हैं

  1. अपनी परियोजना पर राइट क्लिक करें और गुण पर क्लिक करें
  2. C / C ++ के तहत "पूर्वप्रक्रमक शामिल पथ, मैक्रोज़" पर क्लिक करें
  3. प्रदाता टैब चुनें
  4. सूची में एक आइटम होना चाहिए जो "जीसीसी बिल्ट इन कंपाइलर सेटिंग्स" जैसा कुछ कहता है। इस प्रविष्टि का चयन करें।
  5. "वैश्विक प्रदाता का उपयोग करें ..." विकल्प को अनचेक करें
  6. सूची के तहत एक बॉक्स है जो कहता है "कंपाइलर स्पेक्स प्राप्त करने के लिए कमांड।" इसे "-std = c ++ 0x" में जोड़ें।
  7. दाईं ओर स्थित 'मूव अप' बटन का उपयोग करके सूची के शीर्ष पर "कंपाइलर सेटिंग्स में निर्मित जीसीसी" प्रदाता को स्थानांतरित करें।
  8. अप्लाई करें और उसके बाद ओके।
  9. अपने ग्रहण कार्यक्षेत्र में वापस, प्रोजेक्ट मेनू, C / C ++ इंडेक्स का चयन करें, और "फिर से सुलझाया गया पुनः शामिल करें" पर क्लिक करें।

1
धन्यवाद। यह काम किया। हो सकता है कि मैंने जिस दूसरी पोस्ट से लिंक किया था, उसे मैं गलत समझूं, लेकिन ऐसा लगता है कि उस पोस्ट में कंपाइलर स्थापित करने का कोई जिक्र नहीं था।
user327301

1
मेरे लिए काम नहीं करता है। मेरी मुख्य समस्या अनसुलझे c ++ 11 शामिल है। मैंने उस जगह पर रखा -std=c++11था जहाँ आपने कहा था, और पूरे सूचकांक को फिर से बनाया, अभी भी बिना पहचान के std :: cout, std :: set, etc ... का एक
बोझ दिखाता है

2
संपादित करें: मुझे इसका पहला भाग नहीं मिला, जहां यह होना चाहिए, लेकिन मैं इसे बना रहा हूं, इसलिए यह एक स्पष्टीकरण हो सकता है। (मैंने इसे कार्यक्षेत्र कॉन्फ़िगरेशन में पाया और हालांकि इसे सेट किया)। लेकिन मैं इसे डाल दिया compiler spec, और अभी भी काम नहीं करता है। std :: share_ptr और वही मान्यता प्राप्त नहीं है। हालांकि यह जूनो के साथ पुरानी मशीन पर काम करता था।
Dolanor

1
मेरे मामले में (gcc) मैंने -std = c ++ 0x का उपयोग किया। तो सब कुछ काम कर रहा है। धन्यवाद!
डेनिस ज़ैकिन

4
@MrEricSir कार्यक्षेत्र के लिए इस सेटिंग को बनाने का एक तरीका है ताकि जब मैं एक नई परियोजना जोड़ूं तो यह स्वतः ही इसके लिए भी लागू हो जाए?
Ivaylo Strandjev

25

ग्रहण केपलर सेवा रिलीज़ 1 में C ++ 11 समर्थन (बिल्ड आईडी: 20130919-0819)

नवीनतम रिलीज़ एक्लिप्स केपलर SR1 में आपको केवल -std = c ++ 11 जोड़ना होगा

  1. अपने प्रोजेक्ट पर राइट क्लिक करें और प्रॉपर्टीज पर क्लिक करें
  2. C / C ++ जनरल और प्रीप्रोसेसर में नेविगेट करें पथ, मैक्रोज़ आदि शामिल करें।
  3. का चयन करें प्रदाता टैब
  4. संकलक चश्मा पाने के लिए Add -std = c ++ 11 कमांड करें:
  5. परिवर्तन लागू करें, सूचकांक स्वचालित रूप से उत्पन्न किया जाना चाहिए।

"कमांड संकलक चश्मा पाने के लिए:" लाइन तरह दिखना चाहिए:

${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11

2
जीसीसी के साथ मुझे -dd = c ++ 0x
ccook

आप किस जीसीसी का उपयोग करते हैं? c ++ 0 का पुराना नाम (उपनाम) C ++ 11
MeJ

1
यह एक दूसरी बार एक ताजा ग्रहण सीडीटी की स्थापना के लिए मिला - इसे स्थापित करना अधिक सहज होना चाहिए।
ccook


6

मैं ग्रहण केपलर का उपयोग करता हूं और इसे ठीक करने के लिए मैंने ऐसा किया है:

1 - प्रोजेक्ट पर राइट क्लिक करें >> प्रोप्राइसेस >> C / C ++ बिल्ड :: सेटिंग्स

2 - जीसीसी जी ++ कंपाइलर >> विविध >> अन्य झंडे के लिए चला गया

 i then added -std=c++11 
 hit apply and ok

मेरी समस्या ठीक हो गई!

मुझे आशा है कि यह मदद मिली!


यह ग्रहण प्लेटफ़ॉर्म के लिए सबसे अच्छा उत्तर है, संस्करण: 4.3.1 - पता नहीं क्या केप्लर / जूनो है!
TCSGrad

ग्रहण केपलर ग्रहण संस्करण 4.3.X
कर्रक

4

रनिंग ग्रहण इंडिगो और सीडीटी 8.0.2 यहां। मैंने सभी गाइडों का पालन किया, लेकिन std :: unique_ptr जैसी चीजों को खोजने के लिए प्रीप्रोसेसर को हाथ से परिभाषित करना अभी भी आवश्यक था। शामिल फ़ाइल "मेमोरी" यह जांचता है। प्रोजेक्ट गुणों में "C ++ General" में "Paths and Symbols" के अंतर्गत "Symbols" टैब पर __cplusplus को 201103L पर सेट करें।


हां, पुरानी परियोजनाओं से पलायन के लिए काम करता है।
गाय एल

2

परियोजना के गुणों के लिए बोली ध्वज "-std = c ++ 11" जोड़ना-> C / C ++ बिल्ड -> सेटिंग्स -> टूल सेटिंग्स (GCC C ++ कंपाइलर -> बोली) ने ऊपर बताई गई सेटिंग्स के अलावा, ग्रहण केपलर में मेरी समस्या को हल किया।


1

मैं एक्लिप्स लूना का उपयोग कर रहा हूं और सी / सी ++ बिल्ड -> सेटिंग्स के तहत कोई "टूल सेटिंग्स" नहीं है। मैं DID ऐड -std = c ++ के तहत संकलक चश्मा कमांड लाइन के लिए 11 "C / C ++ जनरल -> प्रीप्रोसेसर शामिल -> प्रदाता" के रूप में सुझाव दिया। लेकिन यह अभी भी मेरे सूचकांक () को हल करने की क्षमता को संतुष्ट नहीं करता है।

इसलिए मैंने हेडर फ़ाइल के लिए देखा और पाया कि एमप्लेस फ़ंक्शंस __cplusplus> = 201103L पर निर्भर हैं। इसलिए मैंने सिर्फ प्रीप्रोसेसर प्रतीक "__cplusplus" को जोड़ा और इसे 201103 का मान दिया।

Kinda hackish, लेकिन indexer खुश है। (और मेकफाइल्स मेरे बिल्ड झंडे को परिभाषित करते हैं, न कि ग्रहण परियोजना)


0

MrEricSir द्वारा प्रदान किया गया समाधान केवल नवीनतम एक्लिप्स ऑक्सीजन CDT स्थापित होने के बाद काम करता है। यह मंगल सीडीटी के साथ मेरे लिए काम नहीं करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.