/Zc
(Соответствие)
/Zc
Используйте параметры компилятора, чтобы указать стандартное или конкретное поведение компилятора Майкрософт.
Синтаксис
/Zc:
option{,option ...}
Можно задать несколько /Zc
параметров, разделенных запятыми в одном /Zc
параметре компилятора. /Zc
Если параметр включен и отключен в той же команде, используется параметр, который отображается последним.
Замечания
Если Visual Studio реализовало расширение для C или C++, несовместимое со стандартом /Zc
, можно использовать параметр соответствия, чтобы указать стандартное поведение или поведение майкрософт. Для некоторых вариантов поведение майкрософт является стандартным, чтобы предотвратить крупномасштабные критические изменения существующего кода. В других случаях по умолчанию используется стандартное поведение, в котором улучшения безопасности, производительности или совместимости перевешивают затраты на критические изменения. Параметр по умолчанию каждого параметра соответствия может измениться в более новых версиях Visual Studio. Дополнительные сведения о каждом параметре соответствия см. в статье по конкретному параметру. Параметр /permissive-
компилятора неявно задает параметры соответствия, которые по умолчанию не задаются соответствующими параметрами.
Ниже приведены параметры компилятора /Zc
:
Вариант | Поведение |
---|---|
/Zc:__cplusplus[-] |
__cplusplus Включите макрос, чтобы сообщить о поддерживаемом стандарте. Отключено по умолчанию. |
/Zc:__STDC__ |
__STDC__ Включите макрос, чтобы сообщить о стандарте C, поддерживается. Отключено по умолчанию. |
/Zc:alignedNew[-] |
Включите переопределенное динамическое выделение C++17. Отключено по умолчанию, если /std:c++17 не указано или более поздней версии. |
/Zc:auto[-] |
Применение нового значения C++ уровня "Стандартный" для auto . Включено по умолчанию. |
/Zc:char8_t[-] |
Включите или отключите поддержку собственного u8 литерала C++20 в качестве const char8_t . Отключено по умолчанию, если /std:c++20 не указано или более поздней версии. |
/Zc:checkGwOdr[-] |
Принудительное применение нарушений /Gw ODR c++ уровня "Стандартный". |
/Zc:enumTypes[-] |
Включите стандартные правила C++ для enum вычета типов. Отключено по умолчанию. |
/Zc:externC[-] |
Применение стандартных правил C++ для extern "C" функций. Отключено по умолчанию, если /permissive- не указано. |
/Zc:externConstexpr[-] |
Включите внешнюю компоновку для constexpr переменных. Отключено по умолчанию. |
/Zc:forScope[-] |
Применение правил области C++ for уровня "Стандартный". Включено по умолчанию. |
/Zc:gotoScope[-] |
Применение стандартных правил C++ goto для инициализации локальных переменных. Отключено по умолчанию, если /permissive- не указано. |
/Zc:hiddenFriend[-] |
Применение правил скрытых друзей C++ уровня "Стандартный". Отключено по умолчанию, если /permissive- не указано. |
/Zc:implicitNoexcept[-] |
Включите неявные noexcept функции для обязательных функций. Включено по умолчанию. |
/Zc:inline[-] |
Удалите функции или данные без ссылок, если они COMDAT или имеют только внутреннюю компоновку. Отключено по умолчанию. |
/Zc:lambda[-] |
Включите новый лямбда-процессор для синтактических проверок режима соответствия в универсальных лямбда-кодах. Отключено по умолчанию, если /std:c++20 не указано или более поздней версии. |
/Zc:noexceptTypes[-] |
Применение правил C++17 noexcept . Отключено по умолчанию, если /std:c++17 не указано или более поздней версии. |
/Zc:nrvo[-] |
Включение необязательных копий и перемещений. Отключается по умолчанию, если /O2 не указан параметр , /permissive- или /std:c++20 более поздней версии. |
/Zc:preprocessor[-] |
Используйте новый препроцессор соответствия. Отключено по умолчанию, если /std:c11 не указано или более поздней версии. |
/Zc:referenceBinding[-] |
Временная UDT не привязывается к неконстантной ссылке lvalue. Отключено по умолчанию, если /permissive- не указано. |
/Zc:rvalueCast[-] |
Применение правил явного преобразования типов C++ уровня "Стандартный". Отключено по умолчанию, если /permissive- не указано. |
/Zc:sizedDealloc[-] |
Включите функции размещения сделки глобального размера C++14. Включено по умолчанию. |
/Zc:strictStrings[-] |
Отключите строковый литерал в char* или wchar_t* преобразование. Отключено по умолчанию, если /permissive- не указано. |
/Zc:static_assert[-] |
строгая обработка static_assert . Отключено по умолчанию, если /permissive- не указано. |
/Zc:templateScope[-] |
Применение правил тени параметров шаблона C++ уровня "Стандартный". Отключено по умолчанию. |
/Zc:ternary[-] |
Применение правил условного оператора для типов операндов. Отключено по умолчанию, если /permissive- не указано. |
/Zc:threadSafeInit[-] |
Включите статическую инициализацию, безопасную для потоков. Включено по умолчанию. |
/Zc:throwingNew[-] |
Предположим, что возникает сбой operator new . Отключено по умолчанию. |
/Zc:tlsGuards[-] |
Создание проверок среды выполнения для инициализации переменной TLS. Включено по умолчанию. |
/Zc:trigraphs[-] |
Включите триграфы (устаревшие, отключенные по умолчанию). |
/Zc:twoPhase- |
Используйте несоответствующее поведение синтаксического анализа шаблона (применимо только при /permissive- указании, которое по умолчанию соответствует требованиям). |
/Zc:wchar_t[-] |
wchar_t является собственным типом, а не типом. Включено по умолчанию. |
/Zc:zeroSizeArrayNew[-] |
Вызов члена new /delete для массивов объектов размером 0. Включено по умолчанию. |
Дополнительные сведения о проблемах соответствия в MSVC см. в статье о нестандартном поведении.
См. также
Параметры компилятора MSVC
Синтаксис командной строки компилятора MSVC