Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Параметр /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
Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.
Перейдите на страницу свойств Свойства конфигурации>C/C++>Командная строка.
Добавьте
/Zc:externConstexprили/Zc:externConstexpr-в область "Дополнительные параметры".