Как обновить до C ++ 11? - PullRequest
       1

Как обновить до C ++ 11?

16 голосов
/ 14 февраля 2012

Я новичок в программировании, поэтому никогда не обновлял язык. С выпуском C ++ 11 я хочу использовать все новые функции, такие как лямбда-выражения и потоки. Я знаю, что могу сделать это с внешними библиотеками, но было бы удобнее использовать функции на родном языке.

Я использую gcc 4.2.1 на Mac OS X Snowleopard в Xcode 3.2.6

Что все, что мне нужно сделать и обновить, чтобы начать использовать функции C ++ 11?

Ответы [ 3 ]

24 голосов
/ 14 февраля 2012

Вы можете обновить до Xcode 4.1 (или любой другой версии, которую вы можете получить для Snow Leopard) и получить новый компилятор с несколькими дополнительными функциями C ++ 11. Здесь на Stack Overflow есть сообщения о том, как улучшить поддержку C ++ 11 в Xcode 4.1 на Snow Leopard.

Но даже самый последний компилятор, доступный через XCode, не поддерживает некоторые функции C ++ 11, такие как лямбды. Чтобы получить лучшую поддержку C ++ 11, вам нужно установить более новый компилятор, gcc 4.6 или 4.7 или Clang.

Я часто собираю последнюю версию clang из исходного кода. Это не сложно сделать, если вы знакомы с созданием другого программного обеспечения с открытым исходным кодом. Я использую репозитории git для clang и llvm, http://llvm.org/git/llvm.git и http://llvm.org/git/clang.git. Вы также можете найти инструкции на их веб-сайте для начала работы: http://clang.llvm.org/get_started.html. Когда у вас есть источник для clang и llvm, это просто ./configure && make && sudo make install. (Возможно, вы захотите запустить тесты перед установкой, так как они находятся непосредственно в хранилище. После make do make check в каталоге llvm и после того, как он передает cd в tools / clang и запускает make test. Если тогда все в порядке sudo make install)

Я не помню, включал ли Snow Leopard libc ++ или нет, так что вам, возможно, придется это получить. http://libcxx.llvm.org/

После того, как все построено и установлено, вы можете сделать:

clang++ -std=c++11 -stdlib=libc++ main.cpp && ./a.out

и у вас должна быть лучшая поддержка C ++ 11.

Последние патчи в clang действительно улучшили поддержку последних функций, которые вы, вероятно, заметите как новый программист на C ++. Осталось еще несколько кусочков, но начиная с версии 3.1, и, насколько мне известно, в clang есть все функции C ++ 11, которые есть в gcc 4.7 или VC ++ 11, и даже больше. libc ++ также имеет наименьшее количество пробелов с точки зрения возможностей стандартной библиотеки C ++ 11 IME (хотя я думаю, что стандартная библиотека VC ++ также будет довольно полной, когда они догонят языковые возможности, например char32_t и char16_t как нативные типы, так что обязательные специализации стандарта для этих типов могут быть использованы).

1 голос
/ 23 августа 2014

Если у вас установлен homebrew, из этой статьи всего два шага:

brew tap homebrew/dupes
brew install gcc --enable-cxx --enable-fortran --use-llvm
1 голос
/ 14 февраля 2012

По сути, вам нужно всего лишь получить набор инструментов, поддерживающий новые функции.В macosx это будет либо GCC, либо clang ++.Вам может понадобиться загрузить / скомпилировать определенную версию, если это необходимо (т. Е. Если функция, которую вы хотите попробовать, находится не в заранее упакованном комплекте компилятора, а доступна в репозитории).

Я загрузил и скомпилировал последнюю магистральclang ++ из subversion, чтобы провести некоторое тестирование, и установил g ++ 4.6 с macports в Snow Leopard.Я помню, что у меня были некоторые проблемы с настройкой среды, но я не совсем помню, какой из компиляторов доставил мне проблемы или как я их решил.Гугл там твой друг:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...