13

Вопрос по c++11, linux, c++ – какую норму с ++ я сейчас использую? [Дубликат]

This question already has an answer here:

Недавно я столкнулся с ошибками компиляции в написанном мною коде c ++, поэтому меня спросили, использую ли я компилятор C ++ 11, но, честно говоря, я не знаю, как проверить версию моего компилятора! так есть идеи как это выяснить ??

Кстати, я использую кодовые блоки в качестве IDE, которая включает в себя компилятор GCC и отладчик GDB из MinGW. также, если я компилирую свой код C ++ под Linux, какую команду мне нужно выполнить, чтобы узнать версию моего компилятора?

  • Error: User Rate Limit ExceededClangError: User Rate Limit ExceededGCCError: User Rate Limit Exceeded

    от
  • Error: User Rate Limit Exceededstackoverflow.com/questions/44734397/…

    от
  • Всплывающая подсказка гласит: & quot;This question does not show any research effort& Quot ;.

    от ildjarn
  • Любая причина для понижения голосов !!!!!!

    от Joy
  • Почему это было отмечено как дубликат? Он задает другой вопрос!

    от Stypox
  • 14

    Это может быть сложным вопросом. C ++ 11 относится к версии

    стандарт, а не версия компилятора. Разные компиляторы и разные версии любого данного компилятора, как правило, реализуют смесь версий стандарта, по крайней мере, для последних версий. Больше или меньше, потому что любая реализация C ++ 11 будет довольно новой, и, следовательно, вероятно довольно глючит.

    Большинство компиляторов имеют опции для вывода версии; многие выведут это систематически в подробном режиме. Для g ++ попробуйтеg++ --version, последний версии g ++ имеют некоторую поддержку C ++ 11, но вы должны активировать это с-std=c++0x (а не обычный-std=c++03 или же -std=c++98). Как имя (c++0x, скорее, чемc++11) указывает, это являетсяnot действительно C ++ 11; это реализация некоторых (большинство?) из основные новые функции, в предварительной версии на основе различных рабочих бумаги, а не окончательный стандарт.

    (FWIW: я не думаю, что какой-либо компилятор полностью реализует все C ++ 11, но я люблю быть неправым.)

  • 11

    Вы можете узнать версию своего компилятора следующим образом:

    g++ --version
    

    Это не говорит вам, используете ли вы c ++ 11. Чтобы использовать возможности c ++ 11, вам нужно вызвать компилятор с помощью thr-std=c++0x флаг:

    g++ -std=c++0x ....
    

    Имейте в виду, что gcc еще не реализует 100% c ++ 11, и то, насколько он реализован, зависит от версии. УвидетьВот для таблицы поддерживаемых функций.

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

  • 5

    Если вы находитесь в Linux, проверить версию очень просто.

    > gcc --version
    

    Скажу вам версию, которую вы имеете. Обратите внимание, что поддержка GCC C ++ 11 еще не завершена, подробности можно найти здесь:http://gcc.gnu.org/projects/cxx0x.html

    Я сам использовал несколько функций C ++ 11, а именно списки инициализаторов иnullptr постоянная. Я использую GCC 4.6, и он работает нормально.

    изменить: и да, как сказал @jaunchopanza, вам понадобится-std=c++0x флаг компилятора, чтобы он работал. Если вы используете Code :: Blocks, просто щелкните правой кнопкой мыши свой проект и выберитеBuild options...и проверьте пункт, который говоритHave g++ follow the coming C++0x ISO C++ language standard [-std=c++0x]