Я рассматриваю возможность использования некоторых функций C ++ 11 ( auto
например, таких) в некоторых кроссплатформенных проектах (Windows + Mac). В Windows Visual Studio поддерживает части будущего стандарта C ++ 11, который позволит мне упростить части базы кода, поэтому, естественно, мне было бы интересно начать использовать эти функции.
Но насколько мне известно, текущая версия XCode (3.2.4 + GCC 4.2) вообще не поддерживает никаких функций C ++ 11. Могу ли я как-то обновить версию GCC или версию CLang? Или мне просто прикусить язык и подождать, пока Apple выпустит новую версию когда-нибудь в будущем?
Ответы:
Xcode 4.2 наконец-то добавил поддержку C ++ 0X:
На экране настроек сборки проекта включите опцию «Все».
В разделе «Параметры сборки» установите для компилятора значение «Компилятор Apple LLVM 3.0».
Прокрутите вниз до раздела «Apple LLVM Compiler 3.0 - Язык» и установите «Диалект языка C ++» на «C ++ 0X» и «Стандартная библиотека C ++» на «libc ++».
Известно, что std :: move (), конструктор перемещения и ссылка R-Value работают должным образом, и я тестирую std :: thread и std :: atomic.
источник
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++
вместо этого?clang++
при компиляции, а неg++
поэтому поддержка C ++ 11 не работает при попытке использованияg++
из командной строки (потому что древнийg++
XCode не поддерживает его). Просто к вашему сведению.======= Обновление 2012: =======
Начните с Clang. Многие функции C ++ 11 теперь доступны в Clang. Он включен в Xcode.
======= Исходный ответ от января 2011 г .: =======
Компилятор Intel может быть самым чистым решением в настоящее время. http://software.intel.com/en-us/articles/intel-composer-xe/
clang многообещающий, но не особо стабильный и не имеющий особенностей по сравнению с функциями C ++ 0x. c ++ все еще очень нов для clang.
gcc: относительно зрелый, но вам придется писать и поддерживать плагины компилятора для xcode.
вы также можете указать пользовательские сценарии, но поддерживать это сложно ... если вы не сделаете все возможное и не создадите инструмент адаптера.
источник
Xcode использует компиляторы GCC или Clang C ++. Любые функции, поддерживаемые этими компиляторами, являются честной игрой. Страница совместимости GCC с C ++ находится здесь, а страница совместимости с Clang C ++ здесь .
источник
Я обнаружил, что auto, decltype (), range based "for (:)" работают в кроссплатформенном проекте (LLVM для MacOSX, iOS, gcc / linux, MSVC 10 / windows).
К сожалению, лямбды и макросы с переменным числом аргументов не работают в LLVM.
источник