Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

Я часто создаю последнюю версию clang из источника. Это не сложно сделать, если вы знакомы с созданием другого программного обеспечения с открытым исходным кодом. Я использую git repos для 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 libС++ или нет, так что вам, возможно, понадобится это и получить. http://libcxx.llvm.org/

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

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

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

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

Ответ 2

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

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

Ответ 3

Если у вас есть доморощенный, от этой статьи, выполните только два шага:

brew tap homebrew/dupes
brew install gcc --enable-cxx --enable-fortran --use-llvm