/Zc (conformidad)

Use las opciones del /Zc compilador para especificar el comportamiento estándar o específico del compilador de Microsoft.

Sintaxis

/Zc:option{,option ...}

Puede establecer varias opciones /Zc separadas por comas en una sola opción del compilador /Zc. Si una opción /Zc está habilitada y deshabilitada en el mismo comando, se usa la opción que aparece en último lugar.

Comentarios

Cuando Visual Studio ha implementado una extensión en C o C++ que no es compatible con el estándar, puede usar una opción de conformidad /Zc para especificar el comportamiento de conformidad estándar o específico de Microsoft. Para algunas opciones, el comportamiento específico de Microsoft es el valor predeterminado, a fin de evitar cambios importantes a gran escala en el código existente. En otros casos, el valor predeterminado es el comportamiento estándar, donde las mejoras en la seguridad, el rendimiento o la compatibilidad superan los costos de los cambios importantes. La configuración predeterminada de cada opción de conformidad puede cambiar en versiones más recientes de Visual Studio. Para obtener más información sobre cada opción de conformidad, vea el artículo sobre la opción específica. La opción del compilador /permissive- establece implícitamente las opciones de conformidad que no se establecen de forma predeterminada en su configuración de conformidad.

Estas son las opciones del compilador /Zc:

Opción Comportamiento
/Zc:__cplusplus[-] Habilite la __cplusplus macro para notificar el estándar admitido. Desactivado de forma predeterminada.
/Zc:__STDC__ Se admite habilitar la __STDC__ macro para notificar el estándar de C. Desactivado de forma predeterminada.
/Zc:alignedNew[-] Habilite la asignación dinámica alineada de C++17. Desactivado de forma predeterminada a menos /std:c++17 que se especifique o posterior.
/Zc:auto[-] Aplique el nuevo significado estándar de C++ para auto. Está activada de forma predeterminada.
/Zc:char8_t[-] Habilite o deshabilite la compatibilidad con literales nativos u8 de C++20 como const char8_t. Desactivado de forma predeterminada a menos /std:c++20 que se especifique o posterior.
/Zc:checkGwOdr[-] Aplique las infracciones de ODR estándar de C++ en /Gw.
/Zc:enumTypes[-] Habilite las reglas estándar de C++ para la enum deducción de tipos. Desactivado de forma predeterminada.
/Zc:externC[-] Aplicar reglas estándar de C++ para extern "C" funciones. Desactivado de forma predeterminada a menos que /permissive- se especifique.
/Zc:externConstexpr[-] Habilite la vinculación externa para constexpr las variables. Desactivado de forma predeterminada.
/Zc:forScope[-] Aplicar reglas de ámbito de C++ for estándar. Está activada de forma predeterminada.
/Zc:gotoScope[-] Aplicar reglas estándar de C++ goto en torno a la inicialización de variables locales. Desactivado de forma predeterminada a menos que /permissive- se especifique.
/Zc:hiddenFriend[-] Aplicar reglas de confianza ocultas de C++ estándar. Desactivado de forma predeterminada a menos que /permissive- se especifique.
/Zc:implicitNoexcept[-] Habilite implícitamente noexcept en las funciones necesarias. Está activada de forma predeterminada.
/Zc:inline[-] Quite funciones o datos sin referencia si son COMDAT o solo tienen vinculación interna. Desactivado de forma predeterminada.
/Zc:lambda[-] Habilita el nuevo procesador lambda para las comprobaciones sintácticas en modo de conformidad en expresiones lambda genéricas. Desactivado de forma predeterminada a menos /std:c++20 que se especifique o posterior.
/Zc:noexceptTypes[-] Aplicar reglas de C++17 noexcept . Desactivado de forma predeterminada a menos /std:c++17 que se especifique o posterior.
/Zc:nrvo[-] Habilite la copia opcional y mueva las elisiones. Desactivado de forma predeterminada a menos /O2que se especifique , /permissive-o /std:c++20 posterior.
/Zc:preprocessor[-] Use el nuevo preprocesador conforme. Desactivado de forma predeterminada a menos /std:c11 que se especifique o posterior.
/Zc:referenceBinding[-] Un UDT temporal no se enlazará a una referencia lvalue noconst. Desactivado de forma predeterminada a menos que /permissive- se especifique.
/Zc:rvalueCast[-] Aplicar reglas de conversión de tipos explícitas de C++ estándar. Desactivado de forma predeterminada a menos que /permissive- se especifique.
/Zc:sizedDealloc[-] Habilite las funciones de desasignación de tamaño global de C++14. Está activada de forma predeterminada.
/Zc:strictStrings[-] Deshabilite el literal de cadena en char* o wchar_t* la conversión. Desactivado de forma predeterminada a menos que /permissive- se especifique.
/Zc:static_assert[-] control estricto de static_assert. Desactivado de forma predeterminada a menos que /permissive- se especifique.
/Zc:templateScope[-] Aplicar reglas de sombreado de parámetros de plantilla de C++ estándar. Desactivado de forma predeterminada.
/Zc:ternary[-] Aplicar reglas de operador condicional en tipos de operando. Desactivado de forma predeterminada a menos que /permissive- se especifique.
/Zc:threadSafeInit[-] Habilite la inicialización estática local segura para subprocesos. Está activada de forma predeterminada.
/Zc:throwingNew[-] Supongamos que operator new se produce un error. Desactivado de forma predeterminada.
/Zc:tlsGuards[-] Generar comprobaciones en tiempo de ejecución para la inicialización de variables TLS. Está activada de forma predeterminada.
/Zc:trigraphs[-] Habilita trígrafos (obsoleto, desactivado de forma predeterminada).
/Zc:twoPhase- Use el comportamiento de análisis de plantillas no conformes (solo aplicable cuando /permissive- se especifica, que tiene como valor predeterminado cumplir).
/Zc:wchar_t[-] wchar_t es un tipo nativo, no una definición de tipo. Está activada de forma predeterminada.
/Zc:zeroSizeArrayNew[-] Llame al miembro new/delete para obtener matrices de 0 tamaños de objetos. Está activada de forma predeterminada.

Para obtener más información sobre los problemas de conformidad de MSVC, vea Comportamiento no estándar.

Consulte también

Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC