/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[-] Принудительное применение нарушений /GwODR 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