क्या मैं X ++ के साथ C ++ 11 का उपयोग कर सकता हूं?


86

मैं autoकुछ क्रॉस-प्लेटफॉर्म प्रोजेक्ट्स (विंडोज + मैक) में कुछ सी ++ 11 सुविधाओं ( उदाहरण के लिए) के उपयोग पर विचार कर रहा हूं । विंडोज पर, विजुअल स्टूडियो आगामी सी ++ 11 मानक के कुछ हिस्सों का समर्थन करता है जो मुझे कोड आधार के कुछ हिस्सों को सरल बनाने की अनुमति देगा, इसलिए स्वाभाविक रूप से मैं इन सुविधाओं का उपयोग करने के लिए शुरू करने में दिलचस्पी लूंगा।

लेकिन जहाँ तक मुझे जानकारी है, वर्तमान XCode संस्करण (3.2.4 + GCC 4.2) किसी भी C ++ 11 सुविधाओं का समर्थन नहीं करता है। क्या मैं जीसीसी संस्करण या क्लैंग संस्करण को किसी तरह अपग्रेड कर सकता हूं? या मुझे बस अपनी जीभ काटनी चाहिए और भविष्य में किसी नए संस्करण को पैकेज करने के लिए Apple की प्रतीक्षा करनी चाहिए?


जवाब को देखो यहाँ और वहाँ
F'x

अधिक सकारात्मक परिणाम के लिए, यहां देखें: stackoverflow.com/questions/837992/update-gcc-on-osx
डेविड रॉड्रिग्ज़ - dribeas

क्लैंग के बारे में: मेरा मानना ​​है कि इसने हाल ही में उचित C ++ 03 समर्थन हासिल किया, लेकिन C ++ 0x अभी भी एक लक्ष्य है। उदाहरण के लिए, वैरेडिक टेम्प्लेट का समर्थन प्रगति पर काम कर रहा है और शब्दार्थ / गतिरोध संदर्भ स्थानांतरित नहीं किया गया है।
मैथ्यू एम।

Variadic टेम्पलेट क्लैंग के साथ मेरे लिए ठीक काम करते हैं।
अलेक्जेंड्रे हम्ज़

जवाबों:


76

Xcode 4.2 ने आखिरकार C ++ 0X के लिए समर्थन जोड़ा:

  1. प्रोजेक्ट बिल्ड सेटिंग्स स्क्रीन में, "सभी" विकल्पों पर स्विच करें।

  2. "बिल्ड विकल्प" अनुभाग में, "Apple LLVM कंपाइलर 3.0" के लिए कंपाइलर सेट करें।

  3. "Apple LLVM कंपाइलर 3.0 - भाषा" अनुभाग तक स्क्रॉल करें और "C ++ 0X" और "C ++ स्टैंडर्ड लाइब्रेरी" को "libc ++" में "C ++ भाषा बोली" सेट करें।

एसटीडी :: मूव (), मूव कंस्ट्रक्टर और आर-वैल्यू रेफरेंस को उम्मीद के मुताबिक काम करने के लिए जाना जाता है, और मैं स्टड पर परीक्षण कर रहा हूं :: थ्रेड और एसटी :: परमाणु।


2
@ RichardLiu, के बारे में क्या GNU++0Xके लिए विकल्प C++ Language Dialectऔर libstdc++के लिए विकल्प C++ Standard Library? इनका उपयोग कब किया जाएगा?
टिन

मुझे इस पर एक नज़र पड़ी है /Developer/About\ Xcode.pdfऔर हाँ, यह कहता है कि C ++ 11 समर्थित है, लेकिन जब मैं इसका उपयोग -std=gnu++0xकरता हूं तो इसे थूक दिया जाता है cc1plus: error: unrecognized command line option "-std=0x++"! क्या मुझे clang++इसके बजाय उपयोग करना चाहिए ?
इरोडेवलप्टर

@errordeveloper, अब तक मैंने केवल C ++ 11 को बिना Xcode IDE के सफलतापूर्वक संकलित किया था। मुझे नहीं पता कि कमांड लाइन या मेकफाइल में C ++ 11 को कैसे सक्षम किया जाए। माफ़ करना।
रिचर्डलू

1
@RichardLiu: XCode आमतौर clang++पर संकलन करते समय उपयोग करता है , नहीं g++, यही कारण है g++कि कमांड लाइन से उपयोग करने का प्रयास करते समय C ++ 11 समर्थन विफल हो जाता है (क्योंकि प्राचीन g++XCode आपको देता है इसका समर्थन नहीं करता है)। सिर्फ आपकी जानकारी के लिए।
कॉर्नस्टालक्स

9

======= अपडेट 2012: =======

Clang से शुरू करें - कई C ++ 11 फीचर्स अब Clang में उपलब्ध हैं। यह Xcode के साथ शामिल है।

======= जनवरी 2011 से मूल उत्तर: =======

इस समय जाने के लिए इंटेल का कंपाइलर सबसे साफ तरीका हो सकता है। http://software.intel.com/en-us/articles/intel-composer-xe/

क्लैंग का होनहार, लेकिन विशेष रूप से स्थिर या विशेष रूप से प्रदर्शित नहीं किया गया c ++ 0x विशेषताएं। c ++ अभी भी क्लैंग के लिए बहुत नया है।

gcc: अपेक्षाकृत परिपक्व, लेकिन आपको xcode के लिए अपने संकलक प्लगइन्स को लिखना और बनाए रखना होगा।

आप कस्टम स्क्रिप्ट भी निर्दिष्ट कर सकते हैं, लेकिन यह बनाए रखने के लिए एक दर्द है ... जब तक कि आप सभी बाहर नहीं जाते हैं और एक एडाप्टर उपकरण बनाते हैं।


1

Xcode GCC या Clang C ++ कंपाइलर का उपयोग करता है। उन संकलक द्वारा समर्थित कोई भी सुविधा निष्पक्ष खेल है। GCC का C ++ संगतता पृष्ठ यहाँ है और Clang C ++ संगतता पृष्ठ यहाँ है


2
सच है, लेकिन जीसीसी का समर्थन 4.2 पर बंद हो जाता है जो दांत में थोड़ा लंबा लगना शुरू कर रहा है
मटिया

0

मैंने एक क्रॉस प्लेटफ़ॉर्म प्रोजेक्ट (MacOSX, iOS, gcc / linux, MSVC 10 / windows) के लिए LLVM में काम के लिए (:) :) रेंज आधारित ऑटो, डिक्लेपट () पाया है।

lambdas & varadic macros LLVM के तहत काम करने के लिए अभी तक उदास रूप से प्रकट नहीं होते हैं।


1
MSVC 10 और 11 के लिए श्रेणी-आधारित का समर्थन नहीं करते हैं। दूसरी ओर, क्लैंग , ठीक वैरिएबल टेम्प्लेट का समर्थन करता है।
एलेक्स बी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.