/Zc:externConstexpr (Включение переменных extern constexpr)

Параметр /Zc:externConstexpr компилятора сообщает компилятору, что он соответствует стандарту C++ и разрешает внешнюю компоновку переменных constexpr . По умолчанию Visual Studio всегда предоставляет constexpr переменную внутреннюю компоновку, даже если указать extern ключевое слово.

Синтаксис

/Zc:externConstexpr[-]

Замечания

Параметр /Zc:externConstexpr компилятора приводит к применению внешней компоновки к переменным, объявленным с помощью extern constexpr.

В более ранних версиях Visual Studio по умолчанию или при /Zc:externConstexpr- указании Visual Studio применяет внутреннюю компоновку к constexpr переменным, даже если extern используется ключевое слово. Этот /Zc:externConstexpr параметр доступен начиная с Visual Studio 2017 с обновлением 15.6. значение по умолчанию отключено.

По состоянию на Visual Studio 2022 с обновлением 17.6 параметр /permissive- включает оба /Zc:externConstexpr и /Zc:lambda. В предыдущих версиях /permissive- не включено ни одно.

Если файл заголовка содержит объявленную extern constexprпеременную, ее необходимо пометить __declspec(selectany) , чтобы объединить повторяющиеся объявления в один экземпляр в связанном двоичном файле. В противном случае могут отображаться ошибки компоновщика, например LNK2005, для нарушений правила одноопределенного определения.

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

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

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

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

См. также

Ключевое слово auto
permissive
/Zc (Соответствие)