8

В настоящее время я использую C++ в среде Windows. Я использую Visual Studio 2008 с пакетом обновления 1.Какую версию C++ использую?

Я никогда не думал о версии на С ++, пока я не узнаю о C++11. Там, как представляется, различные версии, как стандарт ANSI, C++ 98 Стандарта и т.д.

  1. Как я могу узнать, какую версию C++ я использую?

  2. Если у меня нет Visual Studio, я знаю, что я могу использовать другие компиляторы, такие как TC, для компиляции кода на C++. В этом случае, как я могу узнать, какая версия C++ используется компилятором.

  3. Являются ли внесенные изменения в последовательные версии C++ о концепциях программирования или только в языке?

+4

Больше нет C++ 0x; это просто C++ 11. –

+3

Вы используете C++ 03 (или любая его часть поддерживает VS08). Вам нужно будет посмотреть документацию для каждого компилятора, чтобы посмотреть, какая версия C++ поддерживает каждый из них; в действительности многие будут поддерживать только «большинство функций» версии и не будут полностью соответствовать стандарту. –

+1

@SethCarnegie: Чтобы быть справедливым, благодаря удалению «экспорта», есть хорошие изменения. GCC и Clang достигнут полного соответствия C++ 11 (минус ошибки, конечно). Microsoft, вероятно, никогда не получит двухфазный поиск, поэтому они не достигнут соответствия независимо от того, сколько функций C++ 11 они реализуют. –

ответ

8

Это не так просто, как проверка версии.

Каждый компилятор, который поддерживает некоторый C++ 11, поддерживает различные подмножество C++ 11. Никакой компилятор не сообщает о полном соответствии с C++ 11 по очевидным причинам.

Спецификация C++ 11 требует определения предопределенного макроса, __cplusplus, который имеет значение 201103L. Тем не менее, вы не можете полагаться только на этот макрос. Не в реальном коде.

Вместо этого вы должны полагаться на макросы, специфичные для компилятора, чтобы указать, когда компилятор и какая версия этого компилятора вы используете. Или вы можете использовать Boost.Config, чтобы помочь вам определить, поддерживаются ли определенные функции.

+1

В Visual Studio есть дорожная карта для запланированных возможностей C++ 11 и C++ 14: https: //blogs.msdn.ком/б/Somasegar/архив/2013/06/28/CPP-соответствие-roadmap.aspx? Redirected = верно – Chris

1

Visual Studio 2008? Вы можете забыть C++ 11. В Visual Studio 2010 есть несколько C++ 11, но это глючит. Visual Studio 2012 имеет некоторые возможности для C++ 11, но другие отсутствуют. В Visual Studio 2013 новая поддержка шаблонов и других функций. Но VS стоит за другими компиляторами, такими как gcc в C++ 11. Вы можете скачать бесплатные экспресс-версии для всех этих версий.

Смежные вопросы