/Zc:__cplusplus (Включить обновленный __cplusplus макрос)

Параметр /Zc:__cplusplus компилятора позволяет макросу __cplusplus препроцессора сообщать обновленное значение для недавней поддержки языковых стандартов C++. По умолчанию Visual Studio всегда возвращает значение 199711L макроса __cplusplus препроцессора.

Синтаксис

/Zc:__cplusplus[-]

Замечания

Макрос __cplusplus препроцессора обычно используется для создания отчетов о поддержке определенной версии стандарта C++. Так как многие существующие коды, как представляется, зависят от значения этого макроса 199711L, компилятор не изменяет значение макроса, если вы явно не согласитесь с помощью параметра компилятора /Zc:__cplusplus . Этот /Zc:__cplusplus параметр доступен начиная с Visual Studio 2017 версии 15.7 и отключен по умолчанию. В более ранних версиях Visual Studio и по умолчанию /Zc:__cplusplus- или при указании Visual Studio возвращает значение 199711L макроса __cplusplus препроцессора. Параметр /permissive- не включает /Zc:__cplusplus.

/Zc:__cplusplus Если параметр включен, значение, указанное макросом__cplusplus, зависит от /std параметра версии. В таблице ниже представлены возможные значения макроса.

/Zc:__cplusplus Параметр /std Параметр Значение __cplusplus
Zc:__cplusplus /std:c++14 (по умолчанию) 201402L
Zc:__cplusplus /std:c++17 201703L
Zc:__cplusplus /std:c++20 202002L
Zc:__cplusplus /std:c++latest см. текст
Zc:__cplusplus- (отключено) Любое значение 199711L
Не указано Любое значение 199711L

Компилятор не поддерживает параметры стандартов для C++98, C++03 или C++11. Этот /std:c++20 параметр доступен начиная с Visual Studio 2019 версии 16.11. Значение __cplusplus параметра /std:c++latest зависит от версии Visual Studio. Это всегда по крайней мере одно значение выше, чем максимально поддерживаемое стандартное значение, поддерживаемое __cplusplus версией Visual Studio.

Для более точного обнаружения изменений в наборе инструментов компилятора используйте _MSC_VER предопределенный макрос. Значение этого встроенного макроса увеличивается при каждом обновлении набора средств в Visual Studio 2017 и более поздних версий. Предопределенный _MSVC_LANG макрос сообщает стандартную версию, /Zc:__cplusplus включена ли параметр или отключена. Если /Zc:__cplusplus включена, имеет то же значение, __cplusplus что _MSVC_LANGи .

Установка параметра компилятора в Visual Studio

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.

  3. Добавьте /Zc:__cplusplus или /Zc:__cplusplus- в область "Дополнительные параметры".

См. также

/Zc (Соответствие)
/std (определение стандартной версии языка)
Предустановленные макросы