Opciones del compilador por categoría
Este artículo contiene una lista por categorías de las opciones del compilador. Para acceder a una lista alfabética, vea Opciones del compilador por orden alfabético.
Optimización
Opción | Fin |
---|---|
/favor:<blend|AMD64|INTEL64|ATOM> |
Muestra el código optimizado para una arquitectura especificada o para un intervalo de arquitecturas. |
/O1 |
Crea código pequeño. |
/O2 |
Crea código rápido. |
/Ob<n> |
Controla la expansión en línea. |
/Od |
Deshabilita la optimización. |
/Og |
Obsoleto. Usa optimizaciones globales. |
/Oi[-] |
Genera funciones intrínsecas. |
/Os |
Favorece el código pequeño. |
/Ot |
Favorece el código rápido. |
/Ox |
Subconjunto de /O2 que no incluye /GF ni /Gy. |
/Oy |
Omite el puntero de marco. (solo x86) |
Generación de código
Opción | Fin |
---|---|
/arch |
Requisitos de arquitectura de CPU mínimos. |
/clr |
Genera un archivo de salida para ejecutar en Common Language Runtime. |
/clr:implicitKeepAlive- |
Desactiva la emisión implícita de System::GC::KeepAlive(this) . |
/clr:initialAppDomain |
Habilita el comportamiento inicial de AppDomain de Visual C++ 2002. |
/clr:netcore |
Produce ensamblados que tienen como destino el entorno de ejecución de .NET Core. |
/clr:noAssembly |
No genera un ensamblado. |
/clr:nostdimport |
No importa los ensamblados necesarios implícitamente. |
/clr:nostdlib |
Omite el directorio del sistema de .NET Framework al buscar ensamblados. |
/clr:pure |
Produce un archivo de salida de solo IL (sin código ejecutable nativo). |
/clr:safe |
Produce un archivo de salida que se puede comprobar solo mediante IL. |
/EHa |
Habilita el control de excepciones de C++ (con excepciones SEH). |
/EHc |
extern "C" tiene nothrow como valor predeterminado. |
/EHr |
Genera siempre comprobaciones de terminación en tiempo de ejecución noexcept . |
/EHs |
Habilita el control de excepciones de C++ (sin excepciones SEH). |
/feature |
Habilite las características de arquitectura.17.10 |
/fp:contract |
Tiene en cuenta las contracciones de punto flotante al generar código. |
/fp:except[-] |
Tiene en cuenta las excepciones de punto flotante al generar el código. |
/fp:fast |
Modelo de punto flotante "rápido"; los resultados son menos predecibles. |
/fp:precise |
Modelo de punto flotante "preciso"; los resultados son predecibles. |
/fp:strict |
Modelo de punto flotante "estricto" (implica /fp:except ). |
/fpcvt:BC |
Conversiones de punto flotante a entero sin signo compatibles con versiones anteriores. |
/fpcvt:IA |
Comportamiento de conversión nativo de Intel de punto flotante a entero sin signo. |
/fsanitize |
Habilita la compilación de instrumentación del saneador, como AddressSanitizer. |
/fsanitize-coverage |
Habilita la compilación de instrumentación de cobertura de código para bibliotecas como LibFuzzer. |
/GA |
Optimiza el código para aplicaciones Windows. |
/Gd |
Usa la convención de llamada __cdecl . (solo x86) |
/Ge |
Obsoleto. Activa las comprobaciones de la pila. |
/GF |
Habilita la agrupación de cadenas. |
/Gh |
Llama a la función de enlace _penter . |
/GH |
Llama a la función de enlace _pexit . |
/GL[-] |
Habilita la optimización completa del programa. |
/Gm[-] |
Obsoleto. Habilita la recompilación mínima. |
/Gr |
Usa la convención de llamada __fastcall . (solo x86) |
/GR[-] |
Habilita la información de tipo en tiempo de ejecución (RTTI). |
/GS[-] |
Comprueba la seguridad de búfer. |
/Gs[n] |
Controla las comprobaciones de la pila. |
/GT |
Admite la seguridad para fibras para los datos asignados mediante almacenamiento local de subprocesos estáticos. |
/Gu[-] |
Garantiza que las distintas funciones tengan direcciones diferentes. |
/guard:cf[-] |
Agrega las comprobaciones de seguridad de protección de flujo de control. |
/guard:ehcont[-] |
Habilita metadatos de continuación de control de excepciones. |
/Gv |
Usa la convención de llamada __vectorcall . (solo x86 y x64) |
/Gw[-] |
Habilita la optimización global de los datos de todo el programa. |
/GX[-] |
Obsoleto. Habilita el control sincrónico de excepciones. En su lugar, use /EH . |
/Gy[-] |
Habilita la vinculación en el nivel de función. |
/Gz |
Usa la convención de llamada __stdcall . (solo x86) |
/GZ |
Obsoleto. Habilita las comprobaciones rápidas. (Igual que /RTC1 ). |
/homeparams |
Fuerza la escritura de parámetros pasados en registros en sus ubicaciones en la pila a la entrada de la función. Esta opción del compilador es solo para compiladores x64 (compilación nativa y cruzada). |
/hotpatch |
Crea una imagen a la que se puede aplicar una revisión reciente. |
/jumptablerdata |
Coloque las tablas de salto de instrucción switch case en la .rdata sección . |
/Qfast_transcendentals |
Genera funciones transcendentales rápidas. |
/QIfist |
Obsoleto. Suprime la llamada de la función del asistente _ftol cuando se requiere la conversión de un tipo de punto flotante a un tipo entero. (solo x86) |
/Qimprecise_fwaits |
Quita los comandos fwait del interior de los bloques try . |
/QIntel-jcc-erratum |
Mitiga el impacto en el rendimiento de la actualización de microcódigo de comprobación de errores de Intel JCC. |
/Qpar |
Habilita la ejecución en paralelo automática de bucles. |
/Qpar-report:n |
Habilita los niveles de informe para la ejecución en paralelo automática. |
/Qsafe_fp_loads |
Utiliza instrucciones de movimiento de enteros para valores de punto flotante y deshabilita ciertas optimizaciones de carga de punto flotante. |
/Qspectre[-] |
Habilita mitigaciones para CVE 2017-5753, para una clase de ataques de Spectre. |
/Qspectre-load |
Genera instrucciones de serialización para cada instrucción de carga. |
/Qspectre-load-cf |
Genera instrucciones de serialización para cada instrucción de flujo de control que cargue memoria. |
/Qvec-report:n |
Habilita los niveles de informe para la vectorización automática. |
/RTC1 |
Habilita comprobaciones rápidas en tiempo de ejecución (equivalentes a /RTCsu ). |
/RTCc |
Realiza una conversión en comprobaciones de tipo más pequeñas en tiempo de ejecución. |
/RTCs |
Habilita las comprobaciones en tiempo de ejecución del marco de pila. |
/RTCu |
Habilita las comprobaciones de uso local no inicializadas. |
/vlen |
Especifica la longitud del vector. |
/volatile:iso |
La adquisición o liberación de semántica no se garantiza en accesos volátiles. |
/volatile:ms |
La adquisición o liberación de semántica se garantiza en accesos volátiles. |
archivos de salida
Opción | Fin |
---|---|
/doc |
Procesa los comentarios de documentación generando un archivo XML. |
/FA |
Configura un archivo de lista de ensamblados. |
/Fa |
Crea un archivo de lista de ensamblado. |
/Fd |
Cambia el nombre del archivo de la base de datos de programa. |
/Fe |
Cambia el nombre del archivo ejecutable. |
/Fi |
Especifica el nombre del archivo de salida preprocesado. |
/Fm |
Crea un archivo de asignaciones. |
/Fo |
Crea un archivo de objeto. |
/Fp |
Especifica el nombre de un archivo de encabezado precompilado. |
/FR , /Fr |
Asigna un nombre a los archivos del explorador .sbr generados. /Fr está en desuso. |
/Ft<dir> |
Ubicación de los archivos de encabezado generados para #import . |
Preprocesador
Opción | Fin |
---|---|
/AI<dir> |
Especifica un directorio de búsqueda para resolver las referencias a archivos que se transfieren a la directiva #using . |
/C |
Conserva los comentarios durante el preprocesamiento |
/D<name>{=|#}<text> |
Define constantes y macros. |
/E |
Copia los resultados del preprocesador a resultados estándar. |
/EP |
Copia los resultados del preprocesador a resultados estándar. |
/FI<file> |
Preprocesa el archivo de inclusión especificado. |
/FU<file> |
Fuerza el uso de un nombre de archivo, como si se hubiera transferido a la directiva #using . |
/Fx |
Combina el código insertado con el archivo de código fuente. |
/I<dir> |
Busca archivos de inclusión en un directorio. |
/P |
Escribe los resultados del preprocesador en un archivo. |
/PD |
Imprime todas las definiciones de macros. |
/PH |
Genera #pragma file_hash al preprocesar. |
/U<name> |
Quita una macro predefinida. |
/u |
Quita todas las macros predefinidas. |
/X |
Omite el directorio de archivos de inclusión estándar. |
Módulos o unidades de encabezado
Opción | Fin |
---|---|
/exportHeader |
Crea los archivos de unidades de encabezado (.ifc ) especificados por los argumentos de entrada. |
/headerUnit |
Especifica dónde buscar el archivo de unidad de encabezado (.ifc ) para el encabezado especificado. |
/headerName |
Crea una unidad de encabezado a partir del encabezado especificado. |
/ifcOutput |
Especifique el nombre de archivo de salida o el directorio para los archivos creados .ifc . |
/interface |
Trata el archivo de entrada como una unidad de interfaz de módulo. |
/internalPartition |
Trata el archivo de entrada como una unidad de partición interna. |
/reference |
Usa IFC de módulo con nombre. |
/scanDependencies |
Enumera las dependencias de módulo y unidad de encabezado en el formulario JSON estándar de C++. |
/sourceDependencies |
Enumera todas las dependencias de nivel de origen. |
/sourceDependencies:directives |
Enumera las dependencias de módulo y unidad de encabezado. |
/translateInclude |
Trata #include como import . |
Lenguaje
Opción | Fin |
---|---|
/await |
Habilita las extensiones de corrutinas (funciones reanudables). |
/await:strict |
Habilita la compatibilidad de corrutinas de C++20 estándar con versiones anteriores del lenguaje. |
/constexpr:backtrace<N> |
Muestra N evaluaciones constexpr en diagnósticos (valor predeterminado: 10). |
/constexpr:depth<N> |
Límite de profundidad de recursividad para la evaluación constexpr (valor predeterminado: 512). |
/constexpr:steps<N> |
Finaliza la evaluación constexpr después de N pasos (valor predeterminado: 100 000). |
/openmp |
Habilita #pragma omp en el código fuente. |
/openmp:experimental |
Habilita las extensiones de lenguaje OpenMP 2.0 más la selección de las extensiones de lenguaje OpenMP 3.0+. |
/openmp:llvm |
Extensiones de lenguaje OpenMP que usan el entorno de ejecución de LLVM. |
/permissive[-] |
Establece el modo de conformidad estándar. |
/std:c++14 |
ISO/IEC 14882:2014 del estándar de C++14 (valor predeterminado). |
/std:c++17 |
ISO/IEC 14882:2017 del estándar de C++17. |
/std:c++20 |
ISO/IEC 14882:2020 del estándar de C++20. |
/std:c++latest |
Características de versión preliminar del estándar de C++ del último borrador. |
/std:c11 |
ISO/IEC 9899:2011 del estándar de C11. |
/std:c17 |
ISO/IEC 9899:2018 del estándar de C17. |
/std:clatest |
Las características más recientes de la versión preliminar estándar de C. |
/vd{0|1|2} |
Suprime o habilita los miembros de la clase vtordisp ocultos. |
/vmb |
Usa la base más apropiada para los punteros a miembros. |
/vmg |
Usa generalidad completa para los punteros a miembros. |
/vmm |
Declara la herencia múltiple. |
/vms |
Declara la herencia simple. |
/vmv |
Declara la herencia virtual. |
/Z7 |
Genera información de depuración compatible con C 7.0. |
/Za |
Deshabilita algunas extensiones de lenguaje C89 en código C. |
/Zc:__cplusplus[-] |
Habilita la macro __cplusplus para notificar el estándar admitido (desactivada de forma predeterminada). |
/Zc:__STDC__ |
Se admite la habilitación de la __STDC__ macro para notificar el estándar de C (desactivado de forma predeterminada). |
/Zc:alignedNew[-] |
Habilita la asignación dinámica alineada en exceso de C++17 (activada de forma predeterminada en C++17). |
/Zc:auto[-] |
Aplica el nuevo significado de C++ estándar para auto (activada de forma predeterminada). |
/Zc:char8_t[-] |
Habilita o deshabilita la compatibilidad con literales nativos u8 de C++20 como const char8_t (desactivada de forma predeterminada, excepto en /std:c++20 ). |
/Zc:enumTypes[-] |
Habilite las reglas estándar de C++ para los tipos base inferidos enum (desactivado b y predeterminado, no implícito en /permissive- ). |
/Zc:externC[-] |
Aplica reglas de C++ estándar para las funciones extern "C" (implícitas en /permissive- ). |
/Zc:externConstexpr[-] |
Habilita la vinculación externa para las variables constexpr (desactivada de forma predeterminada). |
/Zc:forScope[-] |
Aplica reglas de ámbito for de C++ estándar (activadas de forma predeterminada). |
/Zc:gotoScope |
Aplicar reglas estándar de C++ goto en torno a la inicialización de variables locales (implícitas por /permissive- ). |
/Zc:hiddenFriend[-] |
Aplica reglas de confianza ocultas de C++ estándar (implícitas en /permissive- ). |
/Zc:implicitNoexcept[-] |
Habilita noexcept implícito en las funciones necesarias (activado de forma predeterminada). |
/Zc:inline[-] |
Quita 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. |
/Zc:noexceptTypes[-] |
Aplica reglas noexcept de C++17 (activadas de forma predeterminada en C++17 o versiones posteriores). |
/Zc:nrvo[-] |
Habilite la copia opcional y mueva las elisiones (de forma predeterminada en /O2 , /permissive- o /std:c++20 posterior). |
/Zc:preprocessor[-] |
Usa el nuevo preprocesador de conformidad (desactivado de forma predeterminada, excepto en C11/C17). |
/Zc:referenceBinding[-] |
Un UDT temporal no se enlazará a una referencia lvalue que no es const (desactivado de forma predeterminada). |
/Zc:rvalueCast[-] |
Aplica reglas de conversión de tipos explícitas de C++ estándar (desactivadas de forma predeterminada). |
/Zc:sizedDealloc[-] |
Habilita las funciones de desasignación de tamaño global de C++14 (activado de forma predeterminada). |
/Zc:strictStrings[-] |
Deshabilitar el literal de cadena en la conversión de char* o wchar_t* (desactivada de forma predeterminada). |
/Zc:templateScope[-] |
Aplicar reglas de sombreado de parámetros de plantilla de C++ estándar (desactivadas de forma predeterminada). |
/Zc:ternary[-] |
Aplica reglas de operador condicionales en tipos de operando (desactivadas de forma predeterminada). |
/Zc:threadSafeInit[-] |
Habilita la inicialización estática local segura para subprocesos (activada de forma predeterminada). |
/Zc:throwingNew[-] |
Supone que operator new produce un error (desactivado de forma predeterminada). |
/Zc:tlsGuards[-] |
Genera comprobaciones en tiempo de ejecución para la inicialización de variables TLS (activado de forma predeterminada). |
/Zc:trigraphs |
Habilita trígrafos (obsoleto, desactivado de forma predeterminada). |
/Zc:twoPhase[-] |
Use el comportamiento de análisis de plantillas no conforme (conforme de forma predeterminada). |
/Zc:wchar_t[-] |
wchar_t es un tipo nativo, no una definición de tipo (activado de forma predeterminada). |
/Zc:zeroSizeArrayNew[-] |
Llame al miembro new /delete para matrices de tamaño 0 de objetos (activado de forma predeterminada). |
/Ze |
Obsoleto. Habilita las extensiones de lenguaje C89. |
/Zf |
Mejora el tiempo de generación de PDB en compilaciones paralelas. |
/ZH:[MD5|SHA1|SHA_256] |
Especifica MD5, SHA-1 o SHA-256 para las sumas de comprobación en la información de depuración. |
/ZI |
Incluye la información de depuración en una base de datos de programa compatible con Editar y continuar. (solo x86) |
/Zi |
Genera información de depuración completa. |
/Zl |
Quita el nombre de la biblioteca predeterminada del archivo .obj . |
/Zo[-] |
Genera información de depuración más completa para el código optimizado. |
/Zp[n] |
Empaqueta los miembros de la estructura. |
/Zs |
Comprueba únicamente la sintaxis. |
/ZW |
Genera un archivo de salida para que se ejecute en Windows Runtime. |
Vinculación
Opción | Fin |
---|---|
/F |
Establece el tamaño de la pila. |
/LD |
Crea una biblioteca de vínculos dinámicos. |
/LDd |
Crea una biblioteca de vínculos dinámicos para depuración. |
/link |
Pasa la opción especificada a LINK. |
/LN |
Crea un .netmodule MSIL. |
/MD |
Compila para crear una DLL multiproceso mediante MSVCRT.lib. |
/MDd |
Compila para crear una DLL multiproceso para depuración mediante MSVCRTD.lib. |
/MT |
Compila para crear un archivo ejecutable multiproceso mediante LIBCMT.lib. |
/MTd |
Compila para crear un archivo ejecutable multiproceso para depuración mediante LIBCMTD.lib. |
Varios
Opción | Fin |
---|---|
/? |
Enumera las opciones del compilador. |
@ |
Especifica un archivo de respuesta. |
/analyze |
Permite el análisis de código |
/bigobj |
Aumenta el número de secciones direccionables en un archivo .obj. |
/c |
Compila sin vincular. |
/cgthreads |
Especifica el número de subprocesos de cl.exe que se deben usar para la optimización y la generación de código. |
/errorReport |
Obsoleto. Informe de errores de Windows (WER) control de errores de configuración. |
/execution-charset |
Establece el juego de caracteres de ejecución. |
/fastfail |
Habilita el modo de error rápido. |
/FC |
Muestra la ruta de acceso completa de los archivos de código fuente que se pasan a cl.exe en texto de diagnóstico. |
/FS |
Fuerza que las operaciones de escritura en el archivo PDB se serialicen mediante MSPDBSRV.EXE. |
/H |
Obsoleto. Restringe la longitud de los nombres externos (públicos). |
/HELP |
Enumera las opciones del compilador. |
/J |
Cambia el tipo char predeterminado. |
/JMC |
Admite la depuración nativa de C++ de tipo "Solo mi código". |
/kernel |
El compilador y el enlazador crean un binario que se puede ejecutar en el kernel de Windows. |
/MP |
Compila varios archivos de código fuente simultáneamente. |
/nologo |
Suprime la presentación de la pancarta de inicio de sesión. |
/presetPadding |
Inicializa el relleno a cero para tipos de clase basados en la pila. |
/showIncludes |
Muestra una lista de todos los archivos de inclusión durante la compilación. |
/source-charset |
Establece el juego de caracteres de origen. |
/Tc |
Especifica un archivo de código fuente de C. |
/TC |
Especifica que todos los archivos de código fuente son C. |
/Tp |
Especifica un archivo de código fuente de C++. |
/TP |
Especifica que todos los archivos de código fuente son C++. |
/utf-8 |
Establece juegos de caracteres de origen y ejecución en UTF-8. |
/V |
Obsoleto. Establece la cadena de versión. |
/validate-charset |
Valida los archivos UTF-8 solo para caracteres compatibles. |
/volatileMetadata |
Genera metadatos en accesos a la memoria volátil. |
/Yc |
Crea un archivo .PCH . |
/Yd |
Obsoleto. Coloca información completa de depuración en todos los archivos de objeto. En su lugar, use /Zi . |
/Yl |
Inserta una referencia de PCH cuando se crea una biblioteca de depuración. |
/Yu |
Usa un archivo de encabezado precompilado durante la compilación. |
/Y- |
Omite todas las demás opciones del compilador de encabezado precompilado en la generación actual. |
/Zm |
Especifica el límite de asignación de memoria del encabezado precompilado. |
Diagnóstico
Opción | Fin |
---|---|
/diagnostics:caret[-] |
Formato de diagnóstico: imprime la columna y la línea de origen indicada. |
/diagnostics:classic |
Usa el formato de diagnóstico heredado. |
/diagnostics |
Formato de diagnóstico: imprime información de columna. |
/external:anglebrackets |
Trata todos los encabezados incluidos mediante <> como externos. |
/external:env:<var> |
Especifica una variable de entorno con ubicaciones de encabezados externos. |
/external:I <path> |
Especifica la ubicación de encabezados externos. |
/external:templates[-] |
Evalúa el nivel de advertencia en la cadena de creación de una instancia de plantilla. |
/external:W<n> |
Establece el nivel de advertencia para los encabezados externos. |
/options:strict |
Las opciones del compilador no reconocidas son errores. |
/sdl |
Habilita más características y advertencias de seguridad. |
/w |
Deshabilita todas las advertencias. |
/W0 , /W1 , /W2 , , /W3 , /W4 |
Establece el nivel de advertencia de salida. |
/w1<n> , /w2<n> , , /w3<n> , /w4<n> |
Establece el nivel de advertencia para la advertencia especificada. |
/Wall |
Habilita todas las advertencias, incluso las que están deshabilitadas de forma predeterminada. |
/wd<n> |
Deshabilita la advertencia especificada. |
/we<n> |
Trata la advertencia especificada como un error. |
/WL |
Habilita los diagnósticos de una línea para los mensajes de error y de advertencia cuando se compila código fuente de C++ desde la línea de comandos. |
/wo<n> |
Muestra la advertencia especificada solo una vez. |
/Wv:xx[.yy[.zzzzz]] |
Deshabilita las advertencias introducidas después de la versión especificada del compilador. |
/WX |
Trata las advertencias como errores. |
Opciones experimentales
Las opciones experimentales solo se pueden admitir con determinadas versiones del compilador. También podrían comportarse de forma diferente en distintas versiones del compilador. A menudo, la mejor documentación (o la única) para las opciones experimentales se encuentra en el blog del equipo de Microsoft C++.
Opción | Fin |
---|---|
/experimental:log |
Habilita la salida de SARIF estructurada experimental. |
/experimental:module |
Habilita la compatibilidad con módulos experimentales. |
Opciones de compilador en desuso y eliminadas
Opción | Fin |
---|---|
/clr:noAssembly |
Obsoleto. Use /LN (Crear módulo MSIL) en su lugar. |
/errorReport |
Obsoleto. Los informes de errores se controlan mediante la configuración de Informe de errores de Windows (WER). |
/experimental:preprocessor |
Obsoleto. Habilita la compatibilidad con el preprocesador experimental conforme. Use /Zc:preprocessor |
/Fr |
Obsoleto. Crea un archivo de información de examen sin variables locales. |
/Ge |
Obsoleto. Activa las comprobaciones de la pila. Activado de forma predeterminada. |
/Gm |
Obsoleto. Habilita la recompilación mínima. |
/GX |
Obsoleto. Habilita el control sincrónico de excepciones. En su lugar, use /EH . |
/GZ |
Obsoleto. Habilita las comprobaciones rápidas. En su lugar, use /RTC1 . |
/H |
Obsoleto. Restringe la longitud de los nombres externos (públicos). |
/Og |
Obsoleto. Usa optimizaciones globales. |
/QIfist |
Obsoleto. Se usaba para especificar cómo hacer una conversión de un tipo de punto flotante a un tipo entero. |
/V |
Obsoleto. Establece la cadena de versión del archivo .obj . |
/Wp64 |
Obsoleto. Detecta problemas de portabilidad de 64 bits. |
/Yd |
Obsoleto. Coloca información completa de depuración en todos los archivos de objeto. En su lugar, use /Zi . |
/Zc:forScope- |
Obsoleto. Deshabilita la conformidad en el ámbito del bucle. |
/Ze |
Obsoleto. Habilita las extensiones de lenguaje . |
/Zg |
Se quitó en Visual Studio 2015. Genera prototipos de función. |
17.10 Esta opción está disponible a partir de la versión 17.10 de Visual Studio 2022.
Consulte también
Referencia de compilación de C/C++
Opciones del compilador de MSVC
Sintaxis de línea de comandos del compilador de MSVC