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

13

This question already has an answer here:

How to determine the version of the C++ standard used by the compiler? 6 answers

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

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

Всплывающая подсказка гласит: & quot;This question does not show any research effort& Quot ;. ildjarn
Любая причина для понижения голосов !!!!!! Joy
Почему это было отмечено как дубликат? Он задает другой вопрос! Stypox

Ваш Ответ

3   ответа
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

> 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]

14

стандарт, а не версия компилятора. Разные компиляторы и разные версии любого данного компилятора, как правило, реализуют смесь версий стандарта, по крайней мере, для последних версий. Больше или меньше, потому что любая реализация 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, но я люблю быть неправым.)

Error: User Rate Limit Exceededstackoverflow.com/questions/44734397/…
Error: User Rate Limit ExceededClangError: User Rate Limit ExceededGCCError: User Rate Limit Exceeded

Похожие вопросы