Páginas de propriedades C/C++

As páginas de propriedades a seguir são encontradas emProjeto>Propriedades>Propriedades de Configuração>C/C++:

Propriedades gerais do C/C++

Diretórios de Inclusão Adicionais

Especifica um ou mais diretórios a serem adicionados ao caminho de inclusão. Separe os diretórios com ponto-e-vírgula (;) se houver mais de um. Define a opção de compilador /I (Diretórios de inclusão adicionais).

Diretórios #using adicionais

Especifica um ou mais diretórios a serem pesquisados para resolver nomes passados para uma diretiva #using. Separe os diretórios com ponto-e-vírgula (;) se você adicionar mais de um. Define a opção do compilador /AI.

Diretórios BMI adicionais

Especifica um ou mais diretórios a serem pesquisados para resolver nomes passados para uma diretiva import. Separe os diretórios com ponto-e-vírgula (;) se você adicionar mais de um. Define a opção do compilador /ifcSearchDir[path].

Dependências de módulo adicionais

Especifica um ou mais módulos a serem usados para resolver nomes passados para uma diretiva import. Separe os diretórios com ponto-e-vírgula (;) se você adicionar mais de um. Define a opção do compilador /reference.

Dependências adicionais da unidade de cabeçalho

Especifica uma ou mais unidades de cabeçalho a serem usadas para resolver nomes passados para uma diretiva de cabeçalho import. Separe os diretórios com ponto-e-vírgula (;) se você adicionar mais de um. Define a opção do compilador /headerUnit.

Examinar as fontes em busca de dependências de módulo

Quando essa propriedade é definida como Sim, o compilador verifica todas as fontes C++, não apenas as fontes de interface do módulo e de unidade de cabeçalho, para dependências de unidades de módulo e cabeçalho. O sistema de compilação compila o grafo de dependências completo, o que garante que todos os módulos e unidades de cabeçalho importados sejam criados antes de compilar os arquivos que dependem deles. Quando Verificar fontes em busca de dependências de módulo e Traduzir Includes para Imports estiverem ambos definidos como Sim, qualquer arquivo de cabeçalho especificado em um arquivo header-units.json no mesmo diretório que o arquivo de cabeçalho será compilado como uma unidade de cabeçalho.

Os arquivos que têm a extensão .ixx, e os arquivos que têm a propriedade Propriedades do Arquivo>C/C++>Avançado>Compilar como definida como Compilar como unidade de cabeçalho C++ (/exportHeader), são sempre examinados.

Os arquivos que têm a extensão .ixx, e os arquivos que têm suas propriedades do arquivo>C/C++>Compile As definidas como Compile as C++ Header Unit (/exportHeader), são sempre verificados.

Traduzir inclusões em importações

Quando essa propriedade é definida como Sim, o compilador trata uma #include diretiva como uma import diretiva se determinadas condições forem atendidas: o arquivo de cabeçalho é especificado em um header-units.json arquivo no mesmo diretório e uma unidade de cabeçalho compilada (um .ifc arquivo) está disponível para o arquivo de cabeçalho. Caso contrário, o arquivo de cabeçalho é tratado como #include normal. O arquivo header-units.json é usado para compilar unidades de cabeçalho para cada #include, sem duplicação de símbolo. Quando Translate Includes to Imports e Scan Sources for Module Dependencies estiverem ambos definidos como Yes, o compilador localizará automaticamente todos os arquivos de cabeçalho que podem ser compilados em unidades de cabeçalho. Essa propriedade define a opção do compilador /translateInclude.

Formato de informações de depuração

Especifica o tipo de informações de depuração geradas pelo compilador. Essa propriedade requer configurações de vinculador compatíveis. Define as opções do compilador /Z7, /Zi/ZI (Depurar formato de informações).

Opções

  • Nenhum (None) – não produz informações de depuração, portanto, a compilação pode ser mais rápida.
  • Compatível com C7 (OldStyle) – produz arquivos de objeto que contêm informações de depuração simbólicas completas. Nenhum arquivo PDB é produzido.
  • Banco de Dados do Programa (ProgramDatabase) – produz um banco de dados de programa (PDB) que contém informações de tipo e informações simbólicas de depuração para uso com o depurador. As informações simbólicas de depuração incluem os nomes e tipos de variáveis, funções e números de linha.
  • Program Database for Edit and Continue (EditAndContinue) – Produz um banco de dados do programa, conforme descrito anteriormente, em um formato que dá suporte ao recurso Editar e Continuar .

Suporte à depuração Apenas Meu Código

Adiciona um código de suporte para habilitar a depuração Apenas Meu Código nessa unidade de compilação. Define /JMC.

Suporte para Depuração Dinâmica em C++

(Versão prévia) Define o sinalizador /dynamicdeopt do compilador para ativar a Depuração Dinâmica do C++. Coloque pontos de interrupção desotimizados e interrompa em qualquer lugar com a desotimização da função sob demanda. Use esse modo para depurar o código otimizado.

Suporte para Common Language Runtime

Usa o serviço de runtime do .NET. Essa opção é incompatível com algumas outras opções. Consulte a documentação sobre a /clr família de comutadores para obter detalhes.

Opções

  • Sem suporte para Common Language RunTime – sem suporte para Common Language Runtime.
  • Suporte a Common Language Runtime – cria metadados para seu aplicativo que podem ser consumidos por outros aplicativos do CLR. Também permite que seu aplicativo consuma tipos e dados nos metadados de outros componentes do CLR.
  • Suporte ao Common Language Runtime do MSIL puro – produz um arquivo de saída somente MSIL sem código executável nativo, embora possa conter tipos nativos compilados para MSIL.
  • Suporte Seguro ao Common Language Runtime do MSIL – produz um arquivo de saída somente MSIL (sem código executável nativo) e verificável.

Consumir extensão do Windows Runtime

Consumir as extensões de linguagem do Windows Runtime. Define /ZW.

Suprimir Banner de Inicialização

Suprime a exibição do banner de entrada quando o compilador inicia e das mensagens informativas durante a compilação.

Nível de aviso

Selecione o rigor que você deseja que o compilador aplique aos erros de código. Define /W0 - /W4.

Opções

  • Desativar todos os avisos – o nível 0 desabilita todos os avisos.
  • Nível 1 – o Nível 1 exibe avisos graves. O Nível 1 é o nível de aviso padrão na linha de comando.
  • Nível 2 - o Nível 2 exibe todos os avisos de gravidade igual ou inferior ao Nível 1.
  • Nível 3 – O Nível 3 exibe todos os avisos do Nível 2 e todos os outros avisos recomendados para fins de produção.
  • Nível 4 – O Nível 4 exibe todos os avisos de nível 3 e avisos informativos, que na maioria dos casos podem ser ignorados com segurança.
  • EnableAllWarnings – habilita todos os avisos, incluindo os que estão desabilitados por padrão.

Tratar avisos como erros

Trata avisos do compilador como erros. Para um novo projeto, talvez seja melhor usar /WX em cada compilação. Resolva todos os avisos para minimizar os defeitos de código de difícil localização.

Versão de Alerta

Oculta avisos introduzidos após uma versão específica do compilador. Define /Wv:xx[.yy[.zzzzz]].

Formato de diagnóstico

Habilita diagnósticos abrangentes, com informações de coluna e contexto de origem em mensagens de diagnóstico.

Opções

  • Circunflexo - fornece informações de coluna na mensagem de diagnóstico. Também gera a linha de código-fonte relevante com um cursor que indica a coluna ofensiva.
  • Informações da coluna - além disso, fornece o número da coluna dentro da linha em que o diagnóstico é emitido, quando aplicável.
  • Clássico – gera apenas as mensagens de diagnóstico anteriores e concisas com o número de linha.

Verificações de SDL

Verificações adicionais recomendadas pelo SDL (Ciclo de Vida de Desenvolvimento de Segurança). Inclui a habilitação de recursos adicionais para geração segura de código e ativa avisos adicionais relacionados à segurança para que sejam tratados como erros. Define /sdl, /sdl-.

Compilação de multiprocessador

Habilite a compilação multiprocessador. Define a opção do compilador /MP.

Habilitar o Address Sanitizer

Compila e vincula o programa à instrumentação AddressSanitizer. Atualmente, essa propriedade dá suporte a compilações alvo x86 e x64. Define a opção do compilador /fsanitize.

Habilitar o Suporte do Fuzzer (Experimental)

Compila programas com o Fuzzer. Habilite o AddressSanitizer para obter melhores resultados. Atualmente disponível para builds x86 e x64. Define /fsanitize=fuzzer.

Propriedades de Otimização do C/C++

Otimização

Selecione uma opção para otimização de código. Selecione Personalizado para usar opções de otimização específicas. Define /Od, /O1, /O2.

Opções

  • Personalizado – otimização personalizada.
  • Desabilitado – desabilitar a otimização.
  • Otimização máxima (tamanho do favor) – equivalente a /Os /Oy /Ob2 /Gs /GF /Gy.
  • Otimização máxima (velocidade de favor) – equivalente a /Oi /Ot /Oy /Ob2 /Gs /GF /Gy.
  • Otimizações (Priorizar velocidade) - Equivalente a /Oi /Ot /Oy /Ob2.

Expansão da função embutida

Selecione o nível de expansão da função embutida para o build. Define /Ob.

Opções

  • Default
  • Desabilitado – desabilita a expansão embutida, a qual está ativada por padrão.
  • Somente __inline – expande apenas funções marcadas como inline, __forceinlineou __inline. Ou, em uma função membro C++, definida dentro de uma declaração de classe.
  • Qualquer função adequada – expande funções marcadas como inline ou __inline e qualquer outra função que o compilador escolher. (A expansão ocorre a critério do compilador. Essa expansão selecionada pelo compilador geralmente é conhecida como autoinlining.)

Habilitar funções intrínsecas

Habilita funções intrínsecas. O uso de funções intrínsecas gera um código mais rápido, mas possivelmente maior. Define /Oi.

Favorecer tamanho ou velocidade

Priorizar o tamanho ou a velocidade do código. Global Optimization deve ser ativado. Define /Ot, /Os.

Opções

  • Favorecer códigos pequenos – minimiza o tamanho de EXEs e DLLs ao instruir o compilador a favorecer o tamanho em vez da velocidade.
  • Favorecer códigos rápidos – maximiza a velocidade de EXEs e DLLs ao instruir o compilador a favorecer a velocidade em vez do tamanho. (Esse valor é o padrão quando as otimizações estão habilitadas.)
  • Nenhum dos dois – sem otimização de tamanho e velocidade.

Omitir ponteiros de quadros

Inibe a criação de ponteiros de quadros na pilha de chamadas.

Habilitar otimizações de fibra segura

Habilita otimizações de fibra segura para aplicativos que usam fibras para acessar o armazenamento local do thread. Define /GT.

Otimização do Programa Inteiro

Habilita otimizações entre módulos ao atrasar a geração de código para o tempo de vinculação. Requer a opção do vinculador Geração de Código Durante o Tempo de Vinculação. Define /GL.

Propriedades do pré-processador C/C++

Definições do Pré-processador

Define os símbolos de pré-processamento para o arquivo de origem.

Excluir definições do pré-processador

Especifica uma ou mais exclusões de definição do pré-processador. Define /U.

Excluir todas as definições do pré-processador

Desdefine todos os valores do pré-processador previamente definidos. Define /u.

Ignorar os caminhos de inclusão padrão

Evita que o compilador procure arquivos de inclusão nos diretórios especificados na variável de ambiente INCLUDE.

Pré-processar em um arquivo

Pré-processa arquivos de origem em C e C++ e grava a saída pré-processada em um arquivo. Essa opção suprime a compilação e não produz um arquivo .obj.

Pré-processar números de linha de supressão

Pré-processar sem diretivas #line.

Manter comentários

Habilite essa opção para preservar comentários de origem C e C++ (// e /* ... */) em .i arquivos e outras saídas de pré-processador. O pré-processador remove comentários por padrão.

Requer a configuração de pelo menos uma das opções de pré-processamento . Define /C.

Usar o pré-processador padrão em conformidade

Use um pré-processador padrão em conformidade (/Zc:preprocessor). Atualmente implícito pela /std:c11 e versões posteriores. Para usar o pré-processador herdado, defina essa propriedade como No.

Propriedades de Geração de Código C/C++

Habilitar o pool de cadeia de caracteres

Habilite esta propriedade para ativar o agrupamento de strings, que combina strings idênticas em uma única cópia somente leitura no programa compilado. Isso pode resultar em programas menores. /O1, /O2e /ZI defina automaticamente a opção /GF .

Habilitar reconstrução mínima

Habilita a recompilação mínima, que determina se os arquivos de origem C++ devem ser recompilados que incluem arquivos de cabeçalho (.h) contendo definições de classe C++ alteradas.

Habilitar exceções do C++

Especifica o modelo de tratamento de exceções a ser utilizado pelo compilador.

Opções

  • Sim com exceções SEH – o modelo de tratamento de exceções que captura exceções assíncronas (estruturadas) e síncronas (C++). Define /EHa.
  • Sim - O modelo de tratamento de exceções que captura apenas exceções C++ e configura o compilador para assumir que extern "C" as funções nunca geram uma exceção C++. Define /EHsc.
  • Sim, com funções Extern C – o modelo de tratamento de exceções que captura apenas exceções de C++ e configura o compilador para presumir que as funções extern "C" podem lançar uma exceção. Define /EHs.
  • Não – sem tratamento de exceção.

Verificação de tipo menor

Habilita a verificação de conversão em tipos menores. Incompatível com qualquer tipo de otimização diferente de debug. Define /RTCc.

Verificações básicas de runtime

Habilita verificações básicas de erro de runtime. Incompatível com qualquer tipo de otimização que não seja debug. Define /RTCs, /RTCu, /RTC1.

Opções

  • Quadros de Pilha – Habilita a verificação de erros de runtime do quadro de pilha.
  • Variáveis não inicializadas – relata quando uma variável é usada sem ter sido inicializada.
  • Ambos (/RTC1, equivalente a /RTCsu) – equivalente a /RTCsu.
  • Padrão – verificações padrão em tempo de execução.

Biblioteca em Runtime

Especifica uma biblioteca de runtime para vinculação. Define /MT, /MTd, /MD, /MDd.

Opções

  • Multi-threaded – faz com que seu aplicativo use a versão estática e multithread da biblioteca de runtime.
  • Depuração Multithread - Define _DEBUG e _MT. Essa opção também faz com que o compilador coloque o nome da biblioteca LIBCMTD.lib no .obj arquivo para que o vinculador use LIBCMTD.lib para resolver símbolos externos.
  • DLL multithread - Faz com que o seu aplicativo utilize a versão da biblioteca de tempo de execução específica para DLL e com suporte a multithreading. Define _MT e _DLL e faz com que o compilador coloque o nome da biblioteca MSVCRT.lib no arquivo .obj.
  • DLL de depuração multithread - Define _DEBUG, _MT e _DLL e faz com que seu aplicativo use a versão de depuração multithread, específica para DLL, da biblioteca de tempo de execução. Isso também faz com que o compilador coloque o nome da biblioteca MSVCRTD.lib no .obj arquivo.

Alinhamento de Membros da Estrutura

Especifica os limites de 1, 2, 4, 8 ou 16 bytes para alinhamento de membro struct. Define /Zp.

Opções

  • 1 Byte - Empacota estruturas em limites de um byte. Mesmo que /Zp.
  • 2 Bytes - Empacota estruturas em limites de dois bytes.
  • 4 Bytes - Empacota estruturas em limites de quatro bytes.
  • 8 Bytes - Empacota estruturas em limites de oito bytes (padrão).
  • 16 Bytes - Empacota estruturas em limites de dezesseis bytes.
  • Padrão – configurações de alinhamento padrão.

Especifica limites de alinhamento de membros de struct em 1, 2, 4 ou 8 bytes. Define /Zp.

Opções

  • 1 Byte - Empacota estruturas em limites de um byte. Mesmo que /Zp.
  • 2 Bytes - Empacota estruturas em limites de dois bytes.
  • 4 Bytes - Empacota estruturas em limites de quatro bytes.
  • 8 Bytes - Empacota estruturas em limites de oito bytes (padrão).
  • Padrão – configurações de alinhamento padrão.

Verificação de Segurança

Ajuda a detectar excessos de buffer de pilha, que os invasores podem explorar para comprometer seu aplicativo.

Opções

  • Desativar verificação de segurança - Define /GS-.
  • Habilitar Verificação de Segurança - Define /GS.

Proteção de Fluxo de Controle

Ajuda a detectar tentativas de despachar para blocos de código ilegais.

Opções

  • Yes - Habilitar proteção de fluxo de controle. Define /guard:cf.
  • Não

Habilitar vinculação no nível da função

Permite que o compilador empacote funções individuais no formato de funções empacotadas (COMDATs). Necessário para editar e continuar a trabalhar. Define /Gy.

Habilitar a geração de código paralelo

Permite que o compilador gere um código paralelo para loops identificados usando #pragma loop(hint_parallel[(n)]) quando a otimização estiver habilitada.

Habilitar o conjunto de instruções aprimoradas

Habilite o uso de instruções encontradas em processadores que dão suporte a conjuntos de instruções aprimoradas. Por exemplo, os aprimoramentos SSE, SSE2, AVX e AVX2 para IA-32 e os aprimoramentos do AVX e do AVX2 para x64. /arch:SSE está disponível apenas para builds x86. /arch:SSE2 está disponível para builds x86 e x64 e é o padrão para ambas as arquiteturas. O uso de instruções aprimoradas pode ser desabilitado com /arch:IA32. Para obter mais informações, consulte /arch (x86), /arch (x64), /arch (ARM64) e /arch (ARM).

Opções

  • Extensões SIMD de streaming (X86) - Ativa as extensões SIMD de streaming. Define /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Habilita as extensões Streaming SIMD 2. Define /arch:SSE2.
  • Extensões de vetor avançadas (X86/X64) – habilita extensões de vetor avançadas. Define /arch:AVX.
  • Extensões de vetor avançadas 2 (X86/X64) – habilita extensões de vetor avançadas 2. Define /arch:AVX2.
  • Extensões vetoriais avançadas 512 (X86/X64) – habilita extensões de vetor avançadas 512. Define /arch:AVX512.
  • Extensões de vetor avançadas AVX10.1 (X86/X64) – habilita extensões de vetor avançadas 10 versão 1. Define /arch:AVX10.1.
  • Extensões de vetor avançadas AVX10.2 (X86/X64) – habilita extensões de vetor avançadas 10 versão 2. Define /arch:AVX10.2.
  • Extensões de virtualização (ARM). Habilita extensões de virtualização do ARM. Define /arch:ARMv7VE.
  • INSTRUÇÕES ARM VFPv4 (ARM). Habilita as instruções do ARM VFPv4. Define /arch:VFPv4.
  • Requisitos de extensão de CPU ARMv8.0-A (ARM64). Habilita os requisitos ARMv8.0-A. Define /arch:arm8.0.
  • Requisitos de extensão de CPU ARMv8.1-A (ARM64). Habilita os requisitos ARMv8.1-A. Define /arch:arm8.1.
  • Requisitos de extensão de CPU ARMv8.2-A (ARM64). Habilita os requisitos ARMv8.2-A. Define /arch:arm8.2.
  • Requisitos de extensão de CPU ARMv8.3-A (ARM64). Habilita os requisitos ARMv8.3-A. Define /arch:arm8.3.
  • Requisitos de extensão de CPU ARMv8.4-A (ARM64). Habilita os requisitos ARMv8.4-A. Define /arch:arm8.4.
  • Requisitos de extensão de CPU ARMv8.5-A (ARM64). Habilita os requisitos ARMv8.5-A. Define /arch:arm8.5.
  • Requisitos de extensão de CPU ARMv8.6-A (ARM64). Habilita os requisitos ARMv8.6-A. Define /arch:arm8.6.
  • Requisitos de extensão de CPU ARMv8.7-A (ARM64). Habilita os requisitos ARMv8.7-A. Define /arch:arm8.7.
  • Requisitos de extensão de CPU ARMv8.8-A (ARM64). Habilita os requisitos ARMv8.8-A. Define /arch:arm8.8.
  • Sem instruções aprimoradas - Desabilita instruções aprimoradas para compilações x86. Define /arch:IA32.
  • Não Definido – não define explicitamente uma /arch opção.

Habilite o uso de instruções encontradas em processadores que dão suporte a conjuntos de instruções aprimoradas. Por exemplo, os aprimoramentos SSE, SSE2, AVX e AVX2 para IA-32 e os aprimoramentos do AVX e do AVX2 para x64. Atualmente, /arch:SSE e /arch:SSE2 só estão disponíveis ao compilar para a arquitetura x86. Se nenhuma opção for especificada, o compilador usará instruções encontradas em processadores que suportam SSE2. O uso de instruções aprimoradas pode ser desabilitado com /arch:IA32. Para obter mais informações, consulte /arch (x86), /arch (x64), /arch (ARM64) e /arch (ARM).

Opções

  • Extensões SIMD de streaming (X86) - Habilita as Extensões SIMD de streaming. Define /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Habilita as Extensões Streaming SIMD 2. Define /arch:SSE2.
  • Extensões de vetor avançadas (X86/X64) – habilita extensões de vetor avançadas. Define /arch:AVX.
  • Extensões de vetor avançadas 2 (X86/X64) – habilita extensões de vetor avançadas 2. Define /arch:AVX2.
  • Extensões vetoriais avançadas 512 (X86/X64) – habilita extensões de vetor avançadas 512. Define /arch:AVX512.
  • Extensões de vetor avançadas AVX10.1 (X86/X64) – habilita extensões de vetor avançadas 10 versão 1. Define /arch:AVX10.1.
  • Extensões de virtualização (ARM). Habilita extensões de virtualização do ARM. Define /arch:ARMv7VE.
  • INSTRUÇÕES ARM VFPv4 (ARM). Habilita as instruções do ARM VFPv4. Define /arch:VFPv4.
  • Requisitos de extensão de CPU ARMv8.0-A (ARM64). Habilita os requisitos ARMv8.0-A. Define /arch:arm8.0.
  • Requisitos de extensão de CPU ARMv8.1-A (ARM64). Habilita os requisitos ARMv8.1-A. Define /arch:arm8.1.
  • Requisitos de extensão de CPU ARMv8.2-A (ARM64). Habilita os requisitos ARMv8.2-A. Define /arch:arm8.2.
  • Requisitos de extensão de CPU ARMv8.3-A (ARM64). Habilita os requisitos ARMv8.3-A. Define /arch:arm8.3.
  • Requisitos de extensão de CPU ARMv8.4-A (ARM64). Habilita os requisitos ARMv8.4-A. Define /arch:arm8.4.
  • Requisitos de extensão de CPU ARMv8.5-A (ARM64). Habilita os requisitos ARMv8.5-A. Define /arch:arm8.5.
  • Requisitos de extensão de CPU ARMv8.6-A (ARM64). Habilita os requisitos ARMv8.6-A. Define /arch:arm8.6.
  • Requisitos de extensão de CPU ARMv8.7-A (ARM64). Habilita os requisitos ARMv8.7-A. Define /arch:arm8.7.
  • Requisitos de extensão de CPU ARMv8.8-A (ARM64). Habilita os requisitos ARMv8.8-A. Define /arch:arm8.8.
  • Sem instruções aprimoradas - Desabilita instruções aprimoradas para compilações x86. Define /arch:IA32.
  • Não Definido – não define explicitamente uma /arch opção.

Opções

  • Extensões SIMD de Streaming – Extensões SIMD de Streaming. Define /arch:SSE
  • Extensões de Streaming SIMD 2 – Extensões de Streaming SIMD 2. Define /arch:SSE2
  • Extensões de vetor avançadas – extensões de vetor avançadas. Define /arch:AVX
  • Extensões de vetor avançadas 2 – extensões de vetor avançadas 2. Define /arch:AVX2
  • Sem instruções avançadas – sem instruções avançadas. Define /arch:IA32
  • Não definido – não definido.

Habilitar o comprimento do vetor

Habilite a escolha do comprimento do vetor para as bandeiras /arch:AVX512 e /arch:AVX10.x. Os valores permitidos são de 256 e 512 bits (X86/X64).

Modelo de ponto flutuante

Define o modelo de ponto flutuante. Define /fp:precise, /fp:strict, /fp:fast.

Opções

  • Precisão – padrão. Melhora a consistência dos testes de ponto flutuante para igualdade e desigualdade.
  • Estrito – o modelo de ponto flutuante mais estrito. /fp:strict faz com que fp_contract fique desligado e fenv_access fique ligado. /fp:except fica implícita e pode ser desabilitada explicitamente ao se especificar /fp:except-. Quando usado com /fp:except-, /fp:strict assegura semânticas estritas de ponto flutuante, mas sem considerar eventos excepcionais.
  • Rápido – cria o código mais rápido na maioria dos casos.

Habilitar exceções de ponto flutuante

Modelo de exceção de ponto flutuante confiável. As exceções serão geradas imediatamente depois de serem disparadas. Define /fp:except.

Criar imagem disponível para aplicação de patch dinâmica

Quando o hotpatching estiver ativado, o compilador garantirá que a primeira instrução de cada função tenha dois bytes, conforme necessário para o hotpatching. Define /hotpatch.

Mitigação do Spectre

Mitigações do Spectre para CVE 2017-5753. Define /Qspectre.

Opções

  • Habilitado – Habilitar a mitigação do Spectre para CVE 2017-5753.
  • Todas as cargas – habilitar a mitigação do Spectre em todas as cargas.
  • Todos os carregamentos de fluxo de controle - Habilitar a mitigação do Spectre em carregamentos de fluxo de controle.
  • Desabilitado – Não definido.

Mitigação do Spectre

Mitigações do Spectre para CVE 2017-5753. Define /Qspectre.

Opções

  • Habilitado – Habilitar a mitigação do Spectre para CVE 2017-5753.
  • Desabilitado – Não definido.

Habilitar mitigação de errata do Intel JCC

Mitigação de software para o impacto no desempenho causado pela atualização do microcódigo de erratum do Intel JCC. Define /QIntel-jcc-erratum.

Habilitar metadados de continuação de EH

Gera uma lista classificada de todos os destinos de continuação de tratamento de exceção válidos para um binário, usado durante o runtime para validação de RIP. Atualmente disponível para builds x64. Define /guard:ehcont.

Habilitar retornos assinados

Permite retornos assinados, que ajudam a detectar e impedir tentativas de expedição para blocos ilegais de retornos de função. Atualmente disponível para builds ARM64. Define /guard:signret.

Propriedades da linguagem C/C++

Desabilitar extensões de linguagem

Suprime ou habilita extensões de linguagem. Define /Za.

Tratar WChar_t como um tipo interno

Ao habilitar esta propriedade, o tipo wchar_t passa a ser um tipo nativo mapeado para __wchar_t, da mesma forma que short é mapeado para __int16. /Zc:wchar_t está ativado por padrão.

Forçar conformidade para escopo de loop

Implementa o comportamento padrão de C++ para loops de declaração for com extensões da Microsoft. Define /Za, /Ze (Desabilitar extensões de linguagem. /Zc:forScope está ativado por padrão.

Remover dados e códigos não referenciados

Quando você habilita essa propriedade, o compilador não gera mais informações de símbolo para dados e códigos não referenciados.

Aplicar regras de conversão de tipo

Usado para identificar um tipo de referência rvalue como resultado de uma operação de conversão de acordo com o padrão C++11.

Habilitar informações de tipo de tempo de execução

Adiciona código para verificar tipos de objeto C++ em runtime (informações de tipo de runtime ou RTTI). Define /GR, /GR-.

Suporte a Open MP

Habilita extensões de linguagem OpenMP 2.0. Define /openmp.

Padrão de linguagem C++

Determina o padrão de linguagem C++ que o compilador impõe. O valor padrão não define uma opção padrão, portanto, o compilador usa sua configuração padrão C++14. Se você selecionar um valor específico, a opção do compilador correspondente /std será definida.

Opções

  • Padrão (ISO C++14)
  • Padrão ISO C++14 (/std:c++14)
  • Padrão ISO C++17 (/std:c++17)
  • Padrão ISO C++20 (/std:c++20)
  • Versão prévia – ISO C++23 Standard (/std:c++23preview)
  • Versão prévia – recursos do rascunho de trabalho mais recente do C++ (/std:c++latest)

Padrão de linguagem C

Determina o padrão de linguagem C que o compilador impõe. O valor padrão não define uma opção padrão, portanto, o compilador usa sua configuração MSVC herdada padrão. Se você selecionar um valor específico, a opção do compilador correspondente /std será definida.

Opções

  • Padrão (MSVC herdado)
  • Padrão ISO C11 (/std:c11)
  • Padrão ISO C17 (2018) (/std:c17)
  • Versão prévia – Recursos do rascunho de trabalho mais recente da linguagem C (/std:clatest)

Modo de conformidade

Habilita ou suprime o modo de conformidade. Define /permissive-.

Habilitar módulos experimentais da biblioteca padrão do C++

Suporte experimental para o TS dos módulos C++ e módulos da biblioteca padrão.

Criar módulos de biblioteca padrão ISO C++23

A partir do Visual Studio 17.6, quando essa propriedade está habilitada e o C++ Language Standard é definido como /std:c++latest, os projetos do Microsoft C++ localizam e criam automaticamente módulos da Biblioteca Padrão ISO C++23. Isso permite que você faça import std ou import std.compat em seu código C++.

Propriedades de cabeçalhos pré-compilados do C/C++

Cabeçalho pré-compilado

Criar/usar cabeçalho pré-compilado

Habilita a criação ou o uso de um cabeçalho pré-compilado durante o build. Define /Yc, /Yu.

Opções

  • Criar – instrui o compilador a criar um arquivo de cabeçalho pré-compilado (.pch) que representa o estado de compilação em um determinado ponto.
  • Usar – instrui o compilador a usar um arquivo de cabeçalho pré-compilado existente (.pch) na compilação atual.
  • Não usar cabeçalhos pré-compilados – não usar um cabeçalho pré-compilado.

Arquivo de cabeçalho pré-compilado

Especifica o nome do arquivo de cabeçalho que o compilador usa para criar ou acessar um cabeçalho pré-compilado. Define /Yc, /Yu.

Arquivo de saída de cabeçalho pré-compilado

Especifica o caminho ou o nome do arquivo de cabeçalho pré-compilado gerado. Define /Fp.

Propriedades dos Arquivos de Saída de C/C++

Expandir fonte atribuída

Cria um arquivo de listagem com atributos expandidos injetados no arquivo de origem. Define /Fx.

Saída do Assembler

Especifica o conteúdo do arquivo de saída da linguagem assembly. Define /FA, /FAc, /FAs, /FAcs.

Opções

  • No Listing – Sem listagem.
  • Listagem deAssembly-Only – código do assembly: .asm.
  • Assembly com código de máquina - Código de máquina e assembly: .cod.
  • Assembly com o código-fonte - código-fonte e código de assembly: .asm.
  • Assembly, código de máquina e código-fonte - Assembly, código de máquina e código-fonte: .cod.

Usar Unicode para listagem de assembler

Faz o arquivo de saída ser criado em formato UTF-8.

Localização da Lista ASM

Especifica o caminho ou o nome relativo para o arquivo de listagem do ASM. Pode ser um nome de arquivo ou diretório. Define /Fa.

Nome do arquivo de saída do módulo

Localização do arquivo de saída da unidade de módulo ou de cabeçalho (BMI). Pode ser um nome de arquivo ou diretório. Define /ifcOutput[name].

Nome do arquivo de dependências do módulo

Especifica o caminho e/ou o nome do arquivo de dependências do módulo gerado. Define /scanDependencies[path].

Nome do arquivo-objeto

Especifica um nome para substituir o nome padrão do arquivo-objeto. Pode ser um nome de arquivo ou diretório. Define /Fo.

Nome do arquivo de banco de dados do programa

Especifica um nome para um arquivo PDB gerado pelo compilador. Também especifica o nome base para o arquivo IDB gerado pelo compilador necessário. Pode ser um nome de arquivo ou diretório. Define /Fd.

Gerar arquivos de documentação XML

Especifica que o compilador deve gerar arquivos de comentário de documentação XML (.XDC). Define /doc.

Nome do arquivo de documentação XML

Especifica o nome dos arquivos de documentação XML gerados. Pode ser um nome de arquivo ou diretório. Define /doc:<name>.

Gerar arquivo de dependências de origem

Gera um arquivo JSON com a lista de todos os arquivos que o compilador usou para a compilação da origem. Define /sourceDependencies.

Nome do arquivo de dependências de origem

Especifica o caminho e/ou o nome do arquivo de dependências de origem gerado. Define /sourceDependencies[path].

Propriedades de informações de navegação C/C++

Habilitar informações de navegação

Especifica se o compilador deve gerar um .bsc arquivo. Define /FR.

Arquivo de informações de navegação

Especifica um nome opcional para o arquivo de informações do navegador. Define /FR<name>.

Propriedades de Inclusões Externas de C/C++

Tratar os arquivos incluídos com colchetes angulares como externos

Especifica se os arquivos incluídos com colchetes angulares devem ser tratados como externos. Defina essa propriedade como Sim para definir a opção do compilador /external:anglebrackets.

Nível de aviso do cabeçalho externo

Selecione o rigor que você deseja que o compilador aplique aos erros de código em cabeçalhos externos. Essa propriedade define a opção do compilador /external:Wn. Se esse valor for definido como Herdar o nível de aviso do projeto ou o padrão, outras opções /external serão ignoradas.

Diagnóstico de modelo em cabeçalhos externos

Especifica se o nível de aviso deve ser avaliado na cadeia de instanciação de modelo. Defina essa propriedade como Sim para definir a opção do compilador /external:templates-.

Desabilitar a análise de código para cabeçalhos externos

Desabilita a análise de código para cabeçalhos externos. Define a opção do compilador /analyze:external-.

Conjunto de regras de análise para cabeçalhos externos

Especifica uma substituição do conjunto de regras de análise de código para cabeçalhos externos. Se essa propriedade não for especificada, a configuração de Code Analysis será usada. Define a opção do compilador /analyze:external:ruleset path.

Propriedades avançadas do C/C++

Convenção de chamada

Selecione a convenção de chamada padrão para seu aplicativo (pode ser substituída por função). Define /Gd, /Gr, /Gz, /Gv.

Opções

  • __cdecl – Especifica a __cdecl convenção de chamada para todas as funções, exceto funções de membro C++ e funções marcadas __stdcall ou __fastcall.
  • __fastcall – Especifica a __fastcall convenção de chamada para todas as funções, exceto funções de membro C++ e funções marcadas __cdecl ou __stdcall. Todas as funções __fastcall precisam ter protótipos.
  • __stdcall – Especifica a __stdcall convenção de chamada para todas as funções, exceto funções de membro C++ e funções marcadas __cdecl ou __fastcall. Todas as funções __stdcall precisam ter protótipos.
  • __vectorcall - Especifica a __vectorcall convenção de chamada para todas as funções, exceto funções de membro C++ e funções marcadas __cdecl, __fastcallou __stdcall. Todas as funções __vectorcall precisam ter protótipos.

Compilar como

Selecione uma opção de linguagem de compilação para arquivos de origem. Define /TC, /TP, /interface, /internalPartitionou /exportHeader opções.

Opções

  • Padrão – padrão.
  • Compilar como código C (/TC) - Compile arquivos de origem especificados como código C. Por padrão, os arquivos com uma .c extensão são compilados como C.
  • Compilar como código C++ (/TP) - Compile arquivos de origem especificados como código C++. Por padrão, todos os arquivos de origem que não têm uma .c, .ixx, .cppmou .h extensão ou que não têm uma extensão, são compilados como C++.
  • Compilar como código de módulo C++ (/interface) - Compile arquivos de origem especificados como código de módulo C++. Por padrão, os arquivos com uma .ixx ou .cppm extensão são compilados como código do módulo C++.
  • Compilar como partição interna do módulo C++ (/internalPartition) - Compile arquivos de origem especificados como partição interna do módulo C++.
  • Compilar como unidade de cabeçalho C++ (/exportHeader) - Compilar os arquivos de origem especificados como unidade de cabeçalho C++. Por padrão, arquivos com uma .h extensão ou nenhuma extensão são compilados como unidades de cabeçalho.

Desabilitar avisos específicos

Desabilite os números de aviso especificados. Coloque os números de aviso em uma lista delimitada por ponto-e-vírgula. Define /wd<number>.

Arquivo de inclusão forçada

Especifica um ou mais arquivos de inclusão obrigatória. Define /FI<name>.

Arquivo #using forçado

Especifica um ou mais arquivos #using forçados. Define /FU<name>.

Mostrar inclusões

Gera uma lista de arquivos de inclusão com a saída do compilador. Define /showIncludes.

Usar caminhos completos

Use caminhos completos em mensagens de diagnóstico. Define /FC.

Omitir o nome da biblioteca padrão

Especifica a omissão de nomes de bibliotecas padrão em arquivos .obj. Define /Zl.

Relatório de erros do compilador interno

Observação

Essa opção foi preterida. Desde o Windows Vista, o relatório de erros é controlado pelas configurações WER (Relatório de Erros do Windows).

Tratar avisos específicos como erros

Trata o aviso do compilador específico como um erro, em que n é um aviso do compilador.

Opções adicionais

Opções Adicionais.