Páginas de propiedades de C/C++

Las páginas de propiedades siguientes se encuentran en Proyecto>Propiedades>Propiedades de configuración>C/C++:

Propiedades generales de C/C++

Directorios de inclusión adicionales

Especifica uno o más directorios para agregarlos a la ruta de inclusión. Separe los directorios con punto y coma (;) si hay más de uno. Establece la opción del compilador /I (directorios de inclusión adicionales).

Directorios #using adicionales

Especifica uno o varios directorios en los que se buscará para resolver los nombres pasados a una directiva #using. Separe los directorios con punto y coma (;) si agrega más de uno. Establece la opción del compilador /AI.

Directorios de BMI adicionales

Especifica uno o varios directorios en los que se buscará para resolver los nombres pasados a una directiva import. Separe los directorios con punto y coma (;) si agrega más de uno. Establece la opción del compilador /ifcSearchDir[path].

Dependencias de módulo adicionales

Especifica uno o varios módulos que se usarán para resolver los nombres pasados a una directiva import. Separe los directorios con punto y coma (;) si agrega más de uno. Establece la opción del compilador /reference.

Dependencias de unidad de encabezado adicionales

Especifica una o varias unidades de encabezado que se usarán para resolver los nombres pasados a una directiva de encabezado import. Separe los directorios con punto y coma (;) si agrega más de uno. Establece la opción del compilador /headerUnit.

Examinar los orígenes de las dependencias de módulo

Cuando esta propiedad se establece en , el compilador examina todos los archivos fuente de C++, no solo los archivos fuente de interfaz de módulo y de unidad de cabecera, en busca de dependencias de módulos y unidades de cabecera. El sistema de compilación compila el gráfico de dependencias completo, lo que garantiza que todos los módulos importados y las unidades de encabezado se compilan antes de compilar los archivos que dependen de ellos. Cuando Scan Sources for Module Dependencies y Translate Includes to Imports están configuradas como , cualquier archivo de cabecera que se especifica en un archivo header-units.json situado en el mismo directorio que el archivo de cabecera se compila como una unidad de cabecera.

Los archivos que tienen la extensión .ixx, y los archivos que tienen la propiedad Propiedades de archivo>C/C++>Avanzadas>Compilar como establecida en Compilar como unidad de encabezado de C++ (/exportHeader), siempre se analizan.

Los archivos que tienen la extensión , y los archivos que tienen sus propiedades de archivo C/C++ configuradas con la propiedad Compile As establecida a Compile as C++ Header Unit (/exportHeader), siempre se examinan.

Convertir directivas include en import

Cuando esta propiedad se establece en , el compilador trata una #include directiva como una import directiva si se cumplen ciertas condiciones: el archivo de encabezado se especifica en un header-units.json archivo del mismo directorio y hay disponible una unidad de encabezado compilada (un .ifc archivo) para el archivo de encabezado. De lo contrario, el archivo de encabezado se trata como #include normal. El archivo header-units.json se usa para compilar unidades de encabezado para cada #include sin duplicación de símbolos. Cuando Traducir inclusiones a importaciones y Examinar archivos fuente en busca de dependencias de módulos están configurados en , el compilador encuentra automáticamente todos los archivos de encabezado que se pueden compilar como unidades de encabezado. Esta propiedad establece la opción del compilador /translateInclude.

Formato de información de depuración

Especifica el tipo de información de depuración generado por el compilador. Esta propiedad requiere configuraciones de enlazador compatibles. Establece las opciones del compilador /Z7, /Zi y /ZI (Formato de la información de depuración).

Opciones

  • Ninguno (None): no genera información de depuración, por lo que la compilación puede ser más rápida.
  • Compatible con C7 (OldStyle): genera archivos de objeto que contienen información de depuración simbólica completa. No se genera ningún archivo PDB.
  • Base de datos de programa (ProgramDatabase): genera una base de datos de programa (PDB) que contiene información de tipos y información de depuración simbólica para su uso con el depurador. La información de depuración simbólica incluye los nombres y los tipos de las variables, así como las funciones y los números de línea.
  • Base de datos de programa para editar y continuar (EditAndContinue): genera una base de datos de programa, como se ha descrito anteriormente, en un formato que admita la característica Editar y continuar .

Compatibilidad con la depuración de Solo mi código

Agrega código auxiliar para habilitar la depuración de Solo mi código en esta unidad de compilación. Establece /JMC.

Compatibilidad con la depuración dinámica de C++

(Versión preliminar) Establece la marca /dynamicdeopt del compilador para activar la depuración dinámica de C++. Coloque puntos de interrupción desoptimizados y avance paso a paso en cualquier lugar con la desoptimización de funciones a petición. Use este modo para depurar código optimizado.

Compatibilidad con Common Language Runtime

Use el servicio de runtime de .NET. Este interruptor no es compatible con algunos otros interruptores. Consulte la documentación de la familia de conmutadores /clr para obtener más detalles.

Opciones

  • Sin compatibilidad con Common Language Runtime - Sin compatibilidad con Common Language Runtime.
  • Compatibilidad con Common Language Runtime: crea metadatos para la aplicación que otras aplicaciones con CLR pueden consumir. También permite que la aplicación consuma tipos y datos en los metadatos de otros componentes de CLR.
  • Compatibilidad con Common Language Runtime de MSIL puro: genera un archivo de salida de solo MSIL sin código ejecutable nativo, aunque puede contener tipos nativos compilados para MSIL.
  • Compatibilidad segura con Common Language Runtime de MSIL: genera un archivo de salida solo de MSIL (sin código ejecutable nativo) y verificable.

Consumo de extensiones de Windows Runtime

Consumo de extensiones de lenguaje Windows Runtime. Establece /ZW.

Suprimir la pancarta de inicio

Suprime la presentación del banner de inicio de sesión cuando se inicia el compilador y muestra mensajes informativos durante la compilación.

Nivel de advertencia

Permite seleccionar cómo será de estricto el compilador en cuanto a los errores de código. Establece /W0 - /W4.

Opciones

  • Desactivar todas las advertencias: el nivel 0 deshabilita todas las advertencias.
  • Nivel 1: el nivel 1 muestra advertencias graves. Este es el nivel de advertencia predeterminado en la línea de comandos.
  • Nivel 2: el nivel 2 muestra todas las advertencias de nivel 1 y advertencias menos graves que las de ese nivel.
  • Nivel 3: el nivel 3 muestra todas las advertencias de nivel 2 y todas las demás advertencias recomendadas para fines de producción.
  • Nivel4 : el nivel 4 muestra todas las advertencias de nivel 3 y advertencias informativas, que en la mayoría de los casos se pueden omitir de forma segura.
  • Habilitar todas las advertencias: habilita todas las advertencias, incluidas las deshabilitadas de manera predeterminada.

Tratar advertencias como errores

Trata todas las advertencias del compilador como errores. En el caso de un nuevo proyecto, es posible que sea mejor usarlo /WX en cada compilación. Resuelva todas las advertencias para que haya el menor número posible de defectos de código difíciles de encontrar.

Versión de advertencia

Oculta las advertencias generadas después de una versión específica del compilador. Establece /Wv:xx[.yy[.zzzzz]].

Formato de diagnóstico

Permite diagnósticos avanzados con información de columna y contexto de origen en los mensajes de diagnóstico.

Opciones

  • Caret; proporciona información de columna en el mensaje de diagnóstico. También muestra la línea correspondiente del código fuente con un acento circunflejo (^) que indica la columna que contiene el error.
  • Información de columna: proporciona además el número de columna dentro de la línea donde se emite el diagnóstico, si procede.
  • Clásico: solo genera los mensajes de diagnóstico anteriores y concisos con el número de línea.

Comprobaciones de SDL

Comprobaciones adicionales recomendadas por el ciclo de vida de desarrollo de seguridad (SDL). Incluye la habilitación de características adicionales de generación de código seguro y permite advertencias adicionales relevantes para la seguridad como errores. Establece /sdl y /sdl-.

Compilación multiprocesador

Habilite la compilación de varios procesadores. Establece la opción del compilador /MP.

Habilitar AddressSanitizer

Compila y enlaza el programa con instrumentación AddressSanitizer. Esta propiedad admite compilaciones de destino x86 y x64. Establece la opción del compilador /fsanitize.

Habilitación de la compatibilidad con Fuzzer (experimental)

Compila programas con Fuzzer. Habilite AddressSanitizer para obtener los mejores resultados. Actualmente está disponible para compilaciones x86 y x64. Establece /fsanitize=fuzzer.

Propiedades de optimización de C/C++

Optimización

Seleccione una opción para la optimización de código. Seleccione Personalizado para usar opciones de optimización específicas. Establece /Od, /O1 y /O2.

Opciones

  • Personalizado: optimización personalizada.
  • Deshabilitado: deshabilita la optimización.
  • Optimización máxima (priorizar el tamaño) - Equivalente a /Os /Oy /Ob2 /Gs /GF /Gy.
  • Optimización máxima (favor velocidad): equivalente a /Oi /Ot /Oy /Ob2 /Gs /GF /Gy.
  • Optimizaciones (favor velocidad): equivalente a /Oi /Ot /Oy /Ob2.

Expansión de funciones en línea

Seleccione el nivel de expansión de funciones insertadas para la compilación. Establece /Ob.

Opciones

  • Valor predeterminado
  • Deshabilitado: deshabilita la expansión en línea, que está activada de forma predeterminada.
  • Only __inline: expande solo las funciones marcadas como inline, __forceinline o __inline. O bien, en una función miembro de C++, se define dentro de una declaración de clase.
  • Cualquiera adecuado: permite la expansión de las funciones marcadas como inline o __inline y de cualquier otra función que elija el compilador. (La expansión se produce a discreción del compilador. Esta expansión seleccionada por el compilador se conoce a menudo como inserción automática).

Habilitar funciones intrínsecas

Habilita funciones intrínsecas. El uso de funciones intrínsecas genera código más rápido, pero posiblemente mayor. Establece /Oi.

Preferir el tamaño o la velocidad

Si se debe favorecer el tamaño del código o la velocidad del código. Global Optimization debe estar activado. Establece /Ot y /Os.

Opciones

  • Potenciar código pequeño: minimiza el tamaño de los EXE y los archivos DLL al indicar al compilador que favorezca el tamaño con respecto a la velocidad.
  • Potenciar código rápido: maximiza la velocidad de los EXE y los archivos DLL al indicar al compilador que favorece la velocidad con respecto al tamaño. (Este valor es el valor predeterminado cuando se habilitan las optimizaciones).
  • Ninguno: sin optimización de tamaño y velocidad.

Omitir puntero de marcos

Suprime la creación de punteros de marcos en la pila de llamadas.

Habilitar optimizaciones seguras para fibra

Permite optimizaciones seguras con fibras para aplicaciones que usan fibras para acceder al almacenamiento local de hilo. Establece /GT.

Optimización de todo el programa

Facilita las optimizaciones entre módulos al retrasar la generación de código hasta el tiempo de enlace. Requiere la opción del enlazador Generación de código de tiempo de vínculo. Establece /GL.

Propiedades del preprocesador de C/C++

Definiciones de preprocesador

Define los símbolos de preprocesamiento para el archivo de código fuente.

Anular definiciones del preprocesador

Especifica la anulación de una o varias definiciones del preprocesador. Establece /U.

Anular todas las definiciones del preprocesador

Anula la definición de todos los valores del preprocesador definidos previamente. Establece /u.

Omitir rutas de acceso include estándares

Impide que el compilador busque archivos de inclusión en los directorios especificados en las variables de entorno INCLUDE.

Preprocesar a un archivo

Preprocesa archivos de origen de C y C++ y escribe la salida preprocesada en un archivo. Esta opción suprime la compilación y no produce ningún archivo .obj.

Preprocesamiento Suprimir números de línea

Lleva a cabo el preprocesamiento sin directivas #line.

Mantener comentarios

Habilite esta opción para conservar los comentarios de origen de C y C++ (// y /* ... */) en .i archivos y otra salida del preprocesador. El preprocesador quita los comentarios de forma predeterminada.

Requiere establecer al menos una de las opciones de preprocesamiento . Establece /C.

Utilice el preprocesador conforme a los estándares

Use un preprocesador de conformidad estándar (/Zc:preprocessor). Actualmente está implícito en /std:c11 y versiones posteriores. Para usar el preprocesador heredado, establezca esta propiedad en No.

Propiedades de generación de código de C/C++

Habilitación de la agrupación de cadenas

Habilite esta propiedad para habilitar la agrupación de cadenas, que combina cadenas idénticas en una copia de solo lectura en el programa compilado. Esto puede dar lugar a programas más pequeños. /O1, /O2y /ZI establecen automáticamente la /GF opción .

Habilitar recompilación mínima

Habilita la recompilación mínima, que determina si se deben volver a compilar archivos de código fuente de C++ que incluyen archivos de encabezado (.h) que contienen definiciones de clase de C++ modificadas.

Habilitar excepciones de C++

Especifica el modelo de control de excepciones que usará el compilador.

Opciones

  • Sí, con excepciones SEH: modelo de control de excepciones que detecta las excepciones asincrónicas (estructuradas) y sincrónicas (C++). Establece /EHa.
  • Sí: el modelo de control de excepciones que detecta solo las excepciones de C++ y configura el compilador para asumir que extern "C" las funciones nunca producen una excepción de C++. Establece /EHsc.
  • Sí con las funciones de Extern C : el modelo de control de excepciones que detecta solo las excepciones de C++ y configura el compilador para asumir que extern "C" las funciones producen una excepción. Establece /EHs.
  • No: sin manejo de excepciones.

Comprobación de tipos más pequeños

Habilita la comprobación de la conversión a tipos más pequeños. Incompatible con cualquier tipo de optimización que no sea la depuración. Establece /RTCc.

Comprobaciones en tiempo de ejecución básicas

Habilita las comprobaciones básicas de errores en tiempo de ejecución. Incompatible con cualquier tipo de optimización que no sea el modo de depuración. Establece /RTCs, /RTCu y /RTC1.

Opciones

  • Tramas de pila - Habilita la comprobación en tiempo de ejecución de errores en las tramas de pila.
  • Variables sin inicializar: notifica cuándo se usa una variable sin haberse inicializado.
  • Ambos (/RTC1, equiv. a /RTCsu): equivalente a /RTCsu.
  • Valor predeterminado: comprobaciones en tiempo de ejecución predeterminadas.

Biblioteca en tiempo de ejecución

Especifica una biblioteca en tiempo de ejecución para vincular. Establece /MT, /MTd, /MD y /MDd.

Opciones

  • Multiproceso : hace que la aplicación use la versión estática multiproceso de la biblioteca en tiempo de ejecución.
  • Depuración multiproceso: define _DEBUG y _MT. Esta opción también hace que el compilador coloque el nombre de biblioteca LIBCMTD.lib en el .obj archivo para que el enlazador use LIBCMTD.lib para resolver símbolos externos.
  • DLL multiproceso : hace que la aplicación use la versión específica de DLL y multiproceso de la biblioteca en tiempo de ejecución. Define _MT y _DLL, y hace que el compilador coloque el nombre de biblioteca MSVCRT.lib en el archivo .obj.
  • DLL de depuración multiproceso : define _DEBUG, _MTy _DLL hace que la aplicación use la versión de depuración, específica de DLL y multiproceso de la biblioteca en tiempo de ejecución. También hace que el compilador coloque el nombre de biblioteca MSVCRTD.lib en el .obj archivo.

Alineación de elementos de estructura

Especifica límites de 1, 2, 4, 8 o 16 bytes para la alineación de los miembros de una estructura. Establece /Zp.

Opciones

  • 1 Byte : empaqueta estructuras en límites de un byte. Igual que /Zp.
  • 2 Bytes : empaqueta estructuras en límites de dos bytes.
  • 4 Bytes : empaqueta estructuras en límites de cuatro bytes.
  • 8 Bytes : empaqueta estructuras en límites de ocho bytes (valor predeterminado).
  • 16 Bytes - empaqueta estructuras en límites de dieciséis bytes.
  • Valor predeterminado: configuración de alineación predeterminada.

Especifica límites de 1, 2, 4 o 8 bytes para la alineación de miembros de estructura. Establece /Zp.

Opciones

  • 1 Byte : empaqueta estructuras en límites de un byte. Igual que /Zp.
  • 2 Bytes : empaqueta estructuras en límites de dos bytes.
  • 4 Bytes : empaqueta estructuras en límites de cuatro bytes.
  • 8 Bytes : empaqueta estructuras en límites de ocho bytes (valor predeterminado).
  • Valor predeterminado: configuración de alineación predeterminada.

Comprobación de seguridad

Ayuda a detectar saturaciones del búfer de pila, que los atacantes pueden aprovechar para poner en peligro la aplicación.

Opciones

  • Deshabilitar comprobación de seguridad : establece /GS-.
  • Habilitar comprobación de seguridad : establece /GS.

Protección de flujo de control

Ayuda a detectar intentos de envío a bloques de código no válidos.

Opciones

  • : habilite la protección de flujo de control. Establece /guard:cf.
  • No

Habilitar vinculación en el nivel de función

Permite que el compilador empaquete las funciones individuales con formato de funciones empaquetadas (COMDATs). Es necesario para que funcione Editar y continuar. Establece /Gy.

Habilitar la generación de código paralelo

Permite al compilador generar código paralelo para bucles identificados mediante #pragma loop(hint_parallel[(n)]) cuando la optimización está habilitada.

Habilitar conjunto de instrucciones mejoradas

Habilite el uso de instrucciones que se encuentran en procesadores que admiten conjuntos de instrucciones mejoradas. Por ejemplo, las mejoras SSE, SSE2, AVX y AVX2 a IA-32, y las mejoras de AVX y AVX2 a x64. /arch:SSE solo está disponible para compilaciones x86. /arch:SSE2 está disponible para compilaciones x86 y x64 y es el valor predeterminado para ambas arquitecturas. El uso de instrucciones mejoradas se puede deshabilitar con /arch:IA32. Para obtener más información, vea/arch (x86), /arch (x64), /arch (ARM64)y /arch (ARM).

Opciones

  • Extensiones SIMD de streaming (X86): habilita extensiones SIMD de streaming. Establece /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Habilita las extensiones Streaming SIMD 2. Establece /arch:SSE2.
  • Extensiones de vector avanzadas (X86/X64): habilita extensiones de vector avanzadas. Establece /arch:AVX.
  • Extensiones de vector avanzadas 2 (X86/X64): habilita extensiones vectoriales avanzadas 2. Establece /arch:AVX2.
  • Extensiones de vector avanzado 512 (X86/X64): habilita extensiones de vector avanzadas 512. Establece /arch:AVX512.
  • Extensiones vectoriales avanzadas AVX10.1 (X86/X64) - Habilita Advanced Vector Extensions 10 versión 1. Establece /arch:AVX10.1.
  • Advanced Vector Extensions AVX10.2 (X86/X64) - Habilita Advanced Vector Extensions 10 versión 2. Establece /arch:AVX10.2.
  • Extensiones de virtualización (ARM). Habilita las extensiones de virtualización de ARM. Establece /arch:ARMv7VE.
  • Instrucciones de ARM VFPv4 (ARM). Habilita las instrucciones VFPv4 de ARM. Establece /arch:VFPv4.
  • Requisitos de extensión de CPU ARMv8.0-A (ARM64). Habilita los requisitos de ARMv8.0-A. Establece /arch:arm8.0.
  • Requisitos de extensión de CPU ARMv8.1-A (ARM64). Habilita los requisitos de ARMv8.1-A. Establece /arch:arm8.1.
  • Requisitos de extensión de CPU ARMv8.2-A (ARM64). Habilita los requisitos de ARMv8.2-A. Establece /arch:arm8.2.
  • Requisitos de extensión de CPU ARMv8.3-A (ARM64). Habilita los requisitos de ARMv8.3-A. Establece /arch:arm8.3.
  • Requisitos de extensión de CPU ARMv8.4-A (ARM64) . Habilita los requisitos de ARMv8.4-A. Establece /arch:arm8.4.
  • Requisitos de extensión de CPU ARMv8.5-A (ARM64). Habilita los requisitos de ARMv8.5-A. Establece /arch:arm8.5.
  • Requisitos de extensión de CPU ARMv8.6-A (ARM64). Habilita los requisitos de ARMv8.6-A. Establece /arch:arm8.6.
  • Requisitos de extensión de CPU ARMv8.7-A (ARM64). Habilita los requisitos de ARMv8.7-A. Establece /arch:arm8.7.
  • Requisitos de extensión de CPU ARMv8.8-A (ARM64). Habilita los requisitos de ARMv8.8-A. Establece /arch:arm8.8.
  • Sin instrucciones mejoradas : deshabilita las instrucciones mejoradas para las compilaciones x86. Establece /arch:IA32.
  • Sin establecer : no establece explícitamente una /arch opción.

Habilite el uso de instrucciones que se encuentran en procesadores que admiten conjuntos de instrucciones mejoradas. Por ejemplo, las mejoras SSE, SSE2, AVX y AVX2 a IA-32, y las mejoras de AVX y AVX2 a x64. Actualmente, /arch:SSE y /arch:SSE2 solo están disponibles en compilaciones para la arquitectura x86. Si no se especifica ninguna opción, el compilador usa instrucciones que se encuentran en los procesadores que admiten SSE2. El uso de instrucciones mejoradas se puede deshabilitar con /arch:IA32. Para obtener más información, vea/arch (x86), /arch (x64), /arch (ARM64)y /arch (ARM).

Opciones

  • Streaming SIMD Extensions (X86) - Habilita las extensiones Streaming SIMD. Establece /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Habilita las extensiones Streaming SIMD 2. Establece /arch:SSE2.
  • Extensiones de vector avanzadas (X86/X64): habilita extensiones de vector avanzadas. Establece /arch:AVX.
  • Extensiones de vector avanzadas 2 (X86/X64): habilita extensiones vectoriales avanzadas 2. Establece /arch:AVX2.
  • Extensiones de vector avanzado 512 (X86/X64): habilita extensiones de vector avanzadas 512. Establece /arch:AVX512.
  • Extensiones vectoriales avanzadas AVX10.1 (X86/X64) - Habilita Advanced Vector Extensions 10 versión 1. Establece /arch:AVX10.1.
  • Extensiones de virtualización (ARM). Habilita las extensiones de virtualización de ARM. Establece /arch:ARMv7VE.
  • Instrucciones de ARM VFPv4 (ARM). Habilita las instrucciones VFPv4 de ARM. Establece /arch:VFPv4.
  • Requisitos de extensión de CPU ARMv8.0-A (ARM64). Habilita los requisitos de ARMv8.0-A. Establece /arch:arm8.0.
  • Requisitos de extensión de CPU ARMv8.1-A (ARM64). Habilita los requisitos de ARMv8.1-A. Establece /arch:arm8.1.
  • Requisitos de extensión de CPU ARMv8.2-A (ARM64). Habilita los requisitos de ARMv8.2-A. Establece /arch:arm8.2.
  • Requisitos de extensión de CPU ARMv8.3-A (ARM64). Habilita los requisitos de ARMv8.3-A. Establece /arch:arm8.3.
  • Requisitos de extensión de CPU ARMv8.4-A (ARM64) . Habilita los requisitos de ARMv8.4-A. Establece /arch:arm8.4.
  • Requisitos de extensión de CPU ARMv8.5-A (ARM64). Habilita los requisitos de ARMv8.5-A. Establece /arch:arm8.5.
  • Requisitos de extensión de CPU ARMv8.6-A (ARM64). Habilita los requisitos de ARMv8.6-A. Establece /arch:arm8.6.
  • Requisitos de extensión de CPU ARMv8.7-A (ARM64). Habilita los requisitos de ARMv8.7-A. Establece /arch:arm8.7.
  • Requisitos de extensión de CPU ARMv8.8-A (ARM64). Habilita los requisitos de ARMv8.8-A. Establece /arch:arm8.8.
  • Sin instrucciones mejoradas : deshabilita las instrucciones mejoradas para las compilaciones x86. Establece /arch:IA32.
  • Sin establecer : no establece explícitamente una /arch opción.

Opciones

  • Extensiones SIMD de Streaming - Extensiones SIMD de Streaming. Establece /arch:SSE.
  • Extensiones SIMD de streaming 2: extensiones SIMD de streaming 2. Establece /arch:SSE2.
  • Extensiones vectoriales avanzadas: extensiones vectoriales avanzadas. Establece /arch:AVX.
  • Extensiones vectoriales avanzadas 2: extensiones vectoriales avanzadas 2. Establece /arch:AVX2.
  • Sin instrucciones mejoradas: sin instrucciones mejoradas. Establece /arch:IA32.
  • Sin establecer - Sin establecer.

Habilitar la longitud del vector

Habilite la elección de la longitud del vector para las marcas /arch:AVX512 y los indicadores /arch:AVX10.x. Los valores permitidos son 256 y 512 bits (X86/X64).

Modelo de punto flotante

Establece el modelo de punto flotante. Establece /fp:precise, /fp:strict y /fp:fast.

Opciones

  • Preciso: valor predeterminado. Mejora la coherencia de las pruebas de punto flotante de igualdad y desigualdad.
  • Estricto: modelo de punto flotante más estricto. /fp:strict hace fp_contract que esté desactivado y fenv_access estar encendido. /fp:except está implícito y se puede deshabilitar explícitamente si se especifica /fp:except-. Cuando se usa con /fp:except-, /fp:strict fuerza la semántica de punto flotante estricta, pero sin considerar eventos excepcionales.
  • Rápido: crea el código más rápido en la mayoría de los casos.

Habilitar excepciones de punto flotante

Modelo confiable de excepción de punto flotante. Las excepciones se generarán inmediatamente después de que se activen. Establece /fp:except.

Crear una imagen de revisión en caliente

Cuando el hotpatching está activado, el compilador garantiza que la primera instrucción de cada función sea de dos bytes, tal como se requiere para aplicar parches en caliente. Establece /hotpatch.

Mitigación de Spectre

Mitigaciones de Spectre para CVE 2017-5753. Establece /Qspectre.

Opciones

  • Habilitado : habilite la mitigación de Spectre para CVE 2017-5753.
  • Todas las cargas : habilite la mitigación de Spectre en todas las cargas.
  • Todas las cargas de flujo de control : habilite la mitigación de Spectre en las cargas de flujo de control.
  • Deshabilitado : no establecido.

Mitigación de Spectre

Mitigaciones de Spectre para CVE 2017-5753. Establece /Qspectre.

Opciones

  • Habilitado : habilite la mitigación de Spectre para CVE 2017-5753.
  • Deshabilitado : no establecido.

Habilitar la mitigación del error Intel JCC

Mitigación de software para el impacto sobre el rendimiento causado por la actualización del microcódigo de Intel JCC erratum. Establece /QIntel-jcc-erratum.

Habilitar metadatos de continuación de EH

Genera una lista ordenada de todos los destinos de continuación válidos para el manejo de excepciones de un binario, utilizados durante la ejecución en tiempo real para la validación de RIP. Actualmente está disponible para compilaciones x64. Establece /guard:ehcont.

Habilitar devoluciones firmadas

Habilita las devoluciones firmadas, lo que ayuda a detectar y evitar intentos de envío a bloques no válidos de la función devuelve. Actualmente disponible para compilaciones ARM64. Establece /guard:signret.

Propiedades del lenguaje C/C++

Deshabilitar extensiones de lenguaje

Suprime o habilita extensiones de lenguaje. Establece /Za.

Tratar WChar_t como tipo integrado

Al habilitar esta propiedad, el tipo wchar_t se convierte en un tipo nativo que se asigna de __wchar_t la misma manera que short se asigna a __int16. /Zc:wchar_t está activado de forma predeterminada.

Forzar conformidad en el ámbito del bucle For

Implementa el comportamiento estándar de C++ para los bucles de instrucciones for con extensiones de Microsoft. Establece /Za y /Ze (Deshabilitar extensiones de lenguaje. /Zc:forScope está activado de forma predeterminada.

Eliminar código y datos sin referencia

Al habilitar esta propiedad, el compilador ya no genera información de símbolos para datos y código sin referencia.

Exigir reglas de conversión de tipos

Se usa para identificar un tipo de referencia rvalue como resultado de una operación de conversión de acuerdo con el estándar de C++11.

Habilitar información de tipo en tiempo de ejecución

Agrega código para comprobar los tipos de objetos de C++ en tiempo de ejecución (información de tipo en tiempo de ejecución o RTTI). Establece /GR y /GR-.

Compatibilidad con OpenMP

Habilita extensiones de lenguaje de OpenMP 2.0. Establece /openmp.

Estándar de lenguaje C++

Determina el estándar del lenguaje C++ que aplica el compilador. El valor predeterminado no establece ninguna opción estándar, por lo que el compilador usa su configuración predeterminada de C++14. Si selecciona un valor específico, se establece la opción del compilador correspondiente /std .

Opciones

  • Predeterminado (Estándar ISO C++14)
  • Estándar ISO C++14 (/std:c++14)
  • Estándar ISO C++17 (/std:c++17)
  • Estándar ISO C++20 (/std:c++20)
  • Versión preliminar: estándar ISO C++23 (/std:c++23preview)
  • Versión preliminar: características del último borrador de trabajo de C++ (/std:c++latest)

Estándar de lenguaje C

Determina el estándar del lenguaje C que aplica el compilador. El valor predeterminado no establece una opción estándar, por lo que el compilador usa su configuración de MSVC heredada predeterminada. Si selecciona un valor específico, se establece la opción del compilador correspondiente /std .

Opciones

  • Predeterminado (Microsoft Visual C++ heredado)
  • Norma ISO C11 (/std:c11)
  • ISO C17 (2018) Estándar (/std:c17)
  • Versión preliminar: características del borrador de trabajo de C más reciente (/std:clatest)

Modo de conformidad

Habilita o suprime el modo de conformidad. Establece /permissive-.

Habilitación de módulos experimentales de biblioteca estándar de C++

Compatibilidad experimental con los módulos TS de C++ y los módulos de la biblioteca estándar.

Construir módulos de la biblioteca estándar ISO C++23

A partir de Visual Studio 17.6, cuando esta propiedad está habilitada y C++ Language Standard se establece en /std:c++latest, los proyectos de Microsoft C++ buscan y compilan automáticamente los módulos de la biblioteca estándar ISO C++23. Esto le permite import std o import std.compat en su código C++.

Propiedades de encabezados precompilados de C/C++

Encabezado precompilado

Creación o uso de encabezados precompilados

Habilita la creación o el uso de un encabezado precompilado durante la compilación. Establece /Yc y /Yu.

Opciones

  • Crear: indica al compilador que cree un archivo de encabezado precompilado (.pch) que represente el estado de la compilación en un momento determinado.
  • Usar: indica al compilador que use un archivo de encabezado precompilado (.pch) existente en la compilación actual.
  • No usar encabezados precompilados: no se usa ningún encabezado precompilado.

Archivo de encabezado precompilado

Especifica el nombre del archivo de encabezado que usa el compilador para crear o tener acceso a un encabezado precompilado. Establece /Yc y /Yu.

Archivo de salida de encabezados precompilados

Especifica la ruta de acceso o el nombre del archivo de encabezado precompilado que se ha generado. Establece /Fp.

Propiedades de archivos de salida de C/C++

Expandir fuente atribuida

Crea un archivo de lista con atributos expandidos insertados en el archivo de origen. Establece /Fx.

Resultados de ensamblado

Especifica el contenido del archivo de salida del lenguaje de ensamblado. Establece /FA, /FAc, /FAs y /FAcs.

Opciones

  • Sin lista: sin lista.
  • Listado solo de ensamblado - Código de ensamblador: .asm.
  • Ensamblado con código de máquina : máquina y código de ensamblado: .cod.
  • Ensamblado con código fuente : código fuente y de ensamblado: .asm.
  • Ensamblado, código de máquina y origen : ensamblado, código de máquina y código fuente: .cod.

Usar Unicode para lista de ensambladores

Hace que el archivo de salida se cree en formato UTF-8.

Ubicación de la lista ASM

Especifica la ruta de acceso relativa o el nombre del archivo de listado ASM. Puede ser un nombre de archivo o directorio. Establece /Fa.

Nombre del archivo de salida del módulo

Ubicación del archivo de salida de la unidad de cabecera o del módulo (BMI). Puede ser un nombre de archivo o directorio. Establece /ifcOutput[name].

Nombre del archivo de dependencias del módulo

Especifica la ruta de acceso o el nombre del archivo de dependencias del módulo generado. Establece /scanDependencies[path].

Nombre de archivo objeto

Especifica un nombre para reemplazar el nombre del archivo objeto predeterminado. Puede ser un nombre de archivo o directorio. Establece /Fo.

Nombre del archivo de base de datos del programa

Especifica un nombre para un archivo PDB generado por el compilador. Especifica también el nombre base del archivo IDB generado por el compilador necesario. Puede ser un nombre de archivo o directorio. Establece /Fd.

Generar archivos de documentación XML

Especifica que el compilador debe generar archivos de comentarios de documentación XML (.XDC). Establece /doc.

Nombre del archivo de documentación XML

Especifica el nombre de los archivos de documentación XML generados. Puede ser un nombre de archivo o directorio. Establece /doc:<nombre>.

Generar archivo de dependencias de origen

Genera un archivo JSON con la lista de todos los archivos que el compilador usó para la compilación del origen. Establece /sourceDependencies.

Nombre del archivo de dependencias de origen

Especifica la ruta de acceso o el nombre del archivo de dependencias de origen generado. Establece /sourceDependencies[path].

Propiedades de información de exploración de C/C++

Habilitar información de navegación

Especifica si el compilador debe generar un .bsc archivo. Establece /FR.

Archivo de información de examen

Especifica un nombre opcional para el archivo de información del explorador. Establece /FR<nombre>.

Propiedades de inclusión externa de C/C++

Tratar como externos los archivos incluidos en corchetes angulares

Especifica si los archivos incluidos entre corchetes angulares deben tratarse como externos. Establezca esta propiedad en para establecer la opción del compilador /external:anglebrackets.

Nivel de advertencia de encabezados externos

Permite seleccionar cómo será de estricto el compilador en cuanto a los errores de código en encabezados externos. Esta propiedad establece la opción del compilador /external:Wn. Si este valor se establece en Heredar nivel de advertencia del proyecto o el valor predeterminado, se omiten otras opciones /external.

Diagnóstico de plantillas en encabezados externos

Especifica si debe evaluarse el nivel de advertencia en la cadena de instanciación de plantillas. Establezca esta propiedad en para establecer la opción del compilador /external:templates-.

Deshabilitar el análisis de código para encabezados externos

Deshabilita el análisis de código para encabezados externos. Establece la opción del compilador /analyze:external-.

Conjunto de reglas de análisis para encabezados externos

Especifica una anulación del conjunto de reglas de análisis de código para los encabezados externos. Si no se especifica esta propiedad, se utiliza la configuración de Análisis de código. Establece la opción del compilador /analyze:external:ruleset path.

Propiedades avanzadas de C/C++

Convención de llamada

Seleccione la convención de llamada predeterminada para la aplicación (la función puede invalidarla). Establece /Gd, /Gr, /Gz y /Gv.

Opciones

  • __cdecl - Especifica la convención de llamada __cdecl para todas las funciones, excepto las funciones miembro de C++ y las funciones marcadas como __stdcall o __fastcall.
  • __fastcall - Especifica la convención de llamada __fastcall para todas las funciones, excepto las funciones miembro de C++ y las funciones marcadas con __cdecl o __stdcall. Todas las funciones __fastcall deben tener prototipos.
  • __stdcall - Especifica la convención de llamada __stdcall para todas las funciones, excepto las funciones miembro de C++ y las funciones marcadas con __cdecl o __fastcall. Todas las funciones __stdcall deben tener prototipos.
  • __vectorcall : especifica la __vectorcall convención de llamada para todas las funciones, excepto las funciones miembro de C++ marcadas como __cdecl, __fastcallo __stdcall. Todas las funciones __vectorcall deben tener prototipos.

Compilar como

Seleccione una opción de lenguaje de compilación para los archivos de origen. Establece /TC, /TP, /interface, /internalPartition o /exportHeader.

Opciones

  • Predeterminado: opción predeterminada.
  • Compilar como código C (/TC): compile archivos de código fuente especificados como código C. De forma predeterminada, los archivos con una .c extensión se compilan como C.
  • Compilar como código de C++ (/TP): compile archivos de código fuente especificados como código C++. De forma predeterminada, todos los archivos de origen que no tienen una .cextensión , .ixx, .cppmo .h que no tienen una extensión se compilan como C++.
  • Compilar como código de módulo de C++ (/interface): compile archivos de código fuente especificados como código de módulo de C++. De forma predeterminada, los archivos con una .ixx extensión o .cppm se compilan como código de módulo de C++.
  • Compilar como partición interna del módulo de C++ (/internalPartition): compile archivos de origen especificados como partición interna del módulo de C++.
  • Compilar como unidad de encabezado de C++ (/exportHeader): compile archivos de origen especificados como unidad de encabezado de C++. De forma predeterminada, los archivos con una .h extensión o ninguna extensión se compilan como unidades de encabezado.

Deshabilitar advertencias específicas

Deshabilita los números de advertencias específicas. Coloque los números de advertencia en una lista delimitada por punto y coma. Establece /wd<número>.

Archivo include forzado

Especifica uno o varios archivos de inclusión obligatoria. Establece /FI<nombre>.

Archivo #using forzado

Especifica uno o varios archivos #using. Establece /FU<nombre>.

Mostrar inclusiones

Genera una lista de archivos de inclusión con los resultados del compilador. Establece /showIncludes.

Usar rutas de acceso completas

Use rutas de acceso completas en los mensajes de diagnóstico. Establece /FC.

Omitir nombre de biblioteca por defecto

Especifica que se omitirán los nombres de biblioteca predeterminados en .obj los archivos. Establece /Zl.

Informe de errores internos del compilador

Nota:

Esta opción está en desuso. A partir de Windows Vista, los informes de errores se controlan mediante la configuración de Informe de errores de Windows (WER).

Tratar advertencias específicas como errores

Trata la advertencia del compilador específica como un error, donde n es una advertencia del compilador.

Opciones adicionales

Opciones adicionales