Páginas de propriedades C/C++

As seguintes páginas de propriedades são encontradas em Propriedades do projeto>Propriedades>>C/C++:

Propriedades gerais em C/C++

Diretórios de Inclusão Adicionais

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

Diretórios Adicionais #using

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

Diretórios de IMC adicionais

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

Dependências adicionais do módulo

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

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 import diretiva de cabeçalho. Separe os diretórios com ponto e vírgula (;) se adicionar mais do que um diretório. Define a opção do /headerUnit compilador.

Analisar Fontes para Dependências de Módulo

Quando esta propriedade está definida como Sim, o compilador analisa todas as fontes C++, não apenas as fontes da interface do módulo e das unidades de cabeçalho, para dependências de módulos e unidades de cabeçalho. O sistema de compilação constrói o gráfico de dependências completas, o que garante que todos os módulos importados e unidades de cabeçalho sejam construídos antes de compilar os arquivos que dependem deles. Quando Scan Sources for Module Dependencies e Translate Includes to Imports são ambos definidos como Sim, qualquer ficheiro de cabeçalho especificado num header-units.json ficheiro no mesmo diretório do ficheiro de cabeçalho é compilado numa unidade de cabeçalho.

Os ficheiros que têm a extensão .ixx, e os ficheiros que têm a propriedade propriedades do ficheiro>C/C++>Advanced>Compile As definida como Compile as C++ Header Unit (/exportHeader), são sempre analisados.

Os arquivos que têm a extensão .ixx, e os arquivos que têm suas propriedades de ficheiro>propriedades C/C++> com a propriedade Compile As definida como Compile as C++ Header Unit (/exportHeader), são sempre analisados.

Traduza "Includes" para "Imports"

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

Formato de informações de depuração

Especifica o tipo de informações de depuração geradas pelo compilador. Esta propriedade requer configurações de vinculador compatíveis. Define /Z7, /Zi, /ZI (Debug information format) opções do compilador.

Choices

  • Nenhum (None) - Não produz informação de depuração, por isso a compilação pode ser mais rápida.
  • Compatível com C7 (OldStyle) - Produz ficheiros objeto que contêm toda a informação simbólica de depuração. Não é produzido nenhum ficheiro PDB.
  • Base de Dados de Programas (ProgramDatabase) - Produz uma base de dados de programas (PDB) que contém informações sobre tipos e informações simbólicas de depuração para uso com o depurador. As informações de depuração simbólica incluem os nomes e tipos de variáveis e funções e números de linha.
  • Base de Dados de Programas para Editar e Continuar (EditAndContinue) - Produz uma base de dados de programas, conforme descrito anteriormente, num formato que suporta a funcionalidade Editar e Continuar .

Suporte apenas minha depuração de código

Adiciona código de suporte para habilitar a depuração Just My Code nesta unidade de compilação. Define /JMC.

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

(Pré-visualização) Define a flag /dynamicdeopt do compilador para ativar a Depuração Dinâmica em C++. Coloque pontos de interrupção desotimizados e intervenha em qualquer lugar com desotimização de funções sob demanda. Use este modo para depurar código otimizado.

Suporte a RunTime em Linguagem Comum

Utilize o serviço de runtime .NET. Este interruptor é incompatível com outros interruptores. Consulte a documentação sobre a /clr família de interruptores para mais detalhes.

Choices

  • Sem suporte para o Common Language Runtime - Sem suporte para o Common Language Runtime.
  • Common Language RunTime Support - Cria metadados para seu aplicativo que podem ser consumidos por outros aplicativos CLR. Também permite que seu aplicativo consuma tipos e dados nos metadados de outros componentes CLR.
  • Pure MSIL Common Language RunTime Support - Produz um arquivo de saída somente MSIL sem código executável nativo, embora possa conter tipos nativos compilados para MSIL.
  • Safe MSIL Common Language RunTime Support - Produz um arquivo de saída somente MSIL (sem código executável nativo) e verificável.

Consumir a extensão do Tempo de Execução do Windows

Consuma as extensões da linguagem Windows Runtime. Define /ZW.

Suprimir banner de inicialização

Suprime a exibição do banner de logon quando o compilador é iniciado e a exibição de mensagens informativas durante a compilação.

Nível de alerta

Selecione o quão rigoroso você deseja que o compilador seja sobre erros de código. Define /W0 - /W4.

Choices

  • Desativar todos os avisos - O nível 0 desativa todos os avisos.
  • Nível 1 - Nível 1 exibe avisos severos. Nível 1 é o nível de aviso padrão na linha de comando.
  • Nível 2 - Nível 2 exibe todos os avisos de nível 1 e avisos menos graves do que o nível 1.
  • Nível 3 - Nível 3 exibe todos os avisos de nível 2 e todos os outros avisos recomendados para fins de produção.
  • Nível 4 - Nível 4 mostra todos os avisos e avisos informativos de nível 3, que na maioria dos casos podem ser ignorados em segurança.
  • EnableAllWarnings - Habilita todos os avisos, incluindo os desativados por padrão.

Tratar avisos como erros

Trata os avisos do compilador como erros. Para um projeto novo, pode ser melhor usar /WX em todas as compilações. Resolva todos os avisos para minimizar defeitos de código difíceis de encontrar.

Versão de aviso

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

Formato de diagnóstico

Permite diagnósticos avançados, com informações de coluna e contexto de origem em mensagens de diagnóstico.

Choices

  • Caret - Fornece informações de coluna na mensagem de diagnóstico. Também apresenta a linha relevante de código-fonte com um acento circunflexo que indica a coluna com erro.
  • Informações da coluna - Além disso, indica o número da coluna na linha em que o diagnóstico é emitido, quando aplicável.
  • Clássico - Emite apenas as mensagens de diagnóstico anteriores e concisas com o número da linha.

Verificações SDL

Verificações adicionais recomendadas pelo Ciclo de Vida do Desenvolvimento de Segurança (SDL). Inclui ativar funcionalidades adicionais de geração segura de código e permite avisos adicionais relevantes para a segurança como erros. Conjuntos /sdl, /sdl-.

Compilação multiprocessador

Habilite a compilação com vários processadores. Define a opção do /MP compilador.

Ativar o Address Sanitizer

Compila e vincula o programa com a instrumentação AddressSanitizer. Esta propriedade atualmente suporta compilações de destino x86 e x64. Define a opção do /fsanitize compilador.

Ativar Suporte ao Fuzzer (Experimental)

Compila programas com o Fuzzer. Ativa o AddressSanitizer para melhores resultados. Atualmente disponível para versões x86 e x64. Define /fsanitize=fuzzer.

Propriedades de otimização em C/C++

Optimization

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

Choices

  • Personalizado - Otimização personalizada.
  • Desativado - Desative a otimização.
  • Otimização máxima (Privilegiar o tamanho) - Equivalente a /Os /Oy /Ob2 /Gs /GF /Gy.
  • Otimização máxima (Favor Speed) - Equivalente a /Oi /Ot /Oy /Ob2 /Gs /GF /Gy.
  • Otimizações (Favorecer a velocidade) - Equivalente a /Oi /Ot /Oy /Ob2.

Expansão da função em linha

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

Choices

  • Predefinição
  • Desativado - Desabilita a expansão em linha, que está ativada por padrão.
  • Somente __inline - Expande apenas as funções marcadas como inline, __forceinlineou __inline. Ou, em uma função de membro C++, definida dentro de uma declaração de classe.
  • Qualquer Adequado - 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. Esta expansão selecionada pelo compilador é frequentemente referida como autoinlining.)

Ativar funções intrínsecas

Permite funções intrínsecas. Usar funções intrínsecas gera código mais rápido, mas possivelmente maior. Define /Oi.

Prefira o tamanho ou a velocidade

Se preferir o tamanho do código ou a velocidade do código. Global Optimization tem de estar ativado. Conjuntos /Ot, /Os.

Choices

  • Favorecer código pequeno - Minimiza o tamanho de EXEs e DLLs instruindo o compilador a favorecer o tamanho em detrimento da velocidade.
  • Favorecer código rápido - Maximiza a velocidade de EXEs e DLLs instruindo o compilador a favorecer a velocidade em relação ao tamanho. (Este valor é o padrão quando as otimizações estão ativadas.)
  • Nem - Sem otimização de tamanho e velocidade.

Omitir ponteiros de quadro

Impede a criação de ponteiros de quadro na pilha de chamadas.

Ativar otimizações de Fiber-Safe

Permite otimizações compatíveis com fibras para aplicações que utilizam fibras para aceder a armazenamento local por thread. Define /GT.

Otimização de todo o programa

Permite otimizações entre módulos ao adiar a geração do código para o tempo de ligação. Requer a opção linker Link Time Code Generation. Define /GL.

Propriedades do pré-processador C/C++

Definições do pré-processador

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

Remover definições de pré-processador

Especifica uma ou mais desdefinições de pré-processador. Define /U.

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

Remova todas as definições de valores de pré-processador anteriormente definidas. Define /u.

Ignorar caminhos de inclusão padrão

Impede que o compilador procure arquivos include em diretórios especificados nas variáveis de ambiente INCLUDE.

Pré-processamento para um arquivo

Pré-processa arquivos de origem 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 .obj arquivo.

Pré-processar para suprimir os números de linha

Pré-processar sem diretiva #line.

Manter comentários

Ative esta opção para preservar os comentários de origem em C e C++ (// e /* ... */) em .i ficheiros e outras saídas do pré-processador. O pré-processador remove comentários por defeito.

Requer definir pelo menos uma das opções de pré-processamento . Define /C.

Utilizar Pré-processador Padrão Conforme

Use um pré-processador padrão conforme (/Zc:preprocessor). Atualmente implícito por /std:c11 e versões posteriores. Para usar o pré-processador legado, defina esta propriedade para .

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

Habilitar agrupamento de cadeias de caracteres

Ative esta propriedade para ativar o agrupamento de cadeias, que combina cadeias idênticas numa única cópia só de leitura no programa compilado. Isto pode resultar em programas mais pequenos. /O1, /O2, e /ZI definir automaticamente a /GF opção.

Habilite a reconstrução mínima

Permite uma reconstrução mínima, que determina se deve recompilar ficheiros fonte C++ que incluem ficheiros de cabeçalho (.h) contendo definições alteradas de classe C++.

Habilitar exceções C++

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

Choices

  • 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 em C++ e configura o compilador para assumir que extern "C" as funções nunca lançam uma exceção em C++. Define /EHsc.
  • Sim com funções Extern C - O modelo de tratamento de exceções que capta apenas exceções de C++ e configura o compilador para assumir que as funções extern "C" lançam efetivamente uma exceção. Define /EHs.
  • Não - Sem tratamento de exceção.

Verificação de tipo menor

Permite verificar a conversão para tipos mais pequenos. Incompatível com qualquer tipo de otimização que não seja debug. Define /RTCc.

Verificações básicas de tempo de execução

Ativa verificações básicas de erro em tempo de execução. Incompatível com qualquer tipo de otimização que não seja debug. Conjuntos /RTCs, /RTCu, /RTC1.

Choices

  • Stack Frames - Ativa a verificação de erros em tempo de execução de stack frames.
  • Variáveis não inicializadas - Relata quando uma variável é usada sem ter sido inicializada.
  • Ambos (/RTC1, equiv. a /RTCsu) - Equivalente a /RTCsu.
  • Padrão - Verificações de tempo de execução padrão.

Biblioteca de tempo de execução

Especifica uma biblioteca em tempo de execução para ligação. Conjuntos /MT, /MTd, /MD, /MDd.

Choices

  • Multi-threaded - Faz com que a sua aplicação use a versão multithread e estática da biblioteca de runtime.
  • Depuração Multi-threaded - Definem _DEBUG e _MT. Esta opção também faz com que o compilador coloque o nome da biblioteca LIBCMTD.lib no .obj ficheiro para que o linker o use LIBCMTD.lib para resolver símbolos externos.
  • DLL multithread - Faz com que a sua aplicação utilize a versão multithread, específica para DLL, da biblioteca de execução. Define _MT e _DLL faz com que o compilador coloque o nome da biblioteca MSVCRT.lib no .obj arquivo.
  • DLL de depuração multithread - Define _DEBUG, _MT e _DLL e faz com que a sua aplicação utilize a versão de depuração multithread específica de DLL da biblioteca de runtime. Também faz com que o compilador coloque o nome da biblioteca MSVCRTD.lib no .obj ficheiro.

Alinhamento de membros da Struct

Especifica limites de 1, 2, 4, 8 ou 16 bytes para o alinhamento dos membros da struct. Define /Zp.

Choices

  • 1 Byte - Empacota estruturas em limites de um byte. O 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 - Embala estruturas em limites de 16 bytes.
  • Padrão - Configurações de alinhamento padrão.

Especifica limites de 1, 2, 4 ou 8 bytes para o alinhamento dos membros da struct. Define /Zp.

Choices

  • 1 Byte - Empacota estruturas em limites de um byte. O 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 detetar excessos de escrita no buffer da pilha, que os atacantes podem explorar para comprometer a sua aplicação.

Choices

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

Protetor de fluxo de controle

Ajuda a detetar tentativas de despacho para blocos ilegais de código.

Choices

  • Sim - Ativar o Control Flow Guard. Define /guard:cf.
  • No

Ativar ligação ao nível da função

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

Habilitar a geração paralela de código

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

Ativar conjunto de instruções avançado

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

Choices

  • Streaming de Extensões SIMD (x86) - Permite Streaming de Extensões SIMD. Define /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Ativa Streaming SIMD Extensions 2. Define /arch:SSE2.
  • Extensões Vetoriais Avançadas (X86/X64) - Permite extensões vetoriais avançadas. Define /arch:AVX.
  • Extensões Vetoriais Avançadas 2 (X86/X64) - Permite Extensões Vetoriais Avançadas 2. Define /arch:AVX2.
  • Extensões Vetoriais Avançadas 512 (X86/X64) - Ativam as Extensões Vetoriais Avançadas 512. Define /arch:AVX512.
  • Advanced Vector Extensions AVX10.1 (X86/X64) - Ativa a Advanced Vector Extensions 10 versão 1. Define /arch:AVX10.1.
  • Advanced Vector Extensions AVX10.2 (X86/X64) - Ativa Advanced Vector Extensions 10 versão 2. Define /arch:AVX10.2.
  • Extensões de Virtualização (ARM). Permite extensões de virtualização ARM. Define /arch:ARMv7VE.
  • Instruções ARM VFPv4 (ARM). Ativa as instruções ARM VFPv4. Define /arch:VFPv4.
  • Requisitos de extensão de CPU ARMv8.0-A (ARM64). Ativa os requisitos ARMv8.0-A. Define /arch:arm8.0.
  • Requisitos de extensão de CPU ARMv8.1-A (ARM64). Ativa os requisitos ARMv8.1-A. Define /arch:arm8.1.
  • Requisitos de extensão do CPU ARMv8.2-A (ARM64). Ativa os requisitos do ARMv8.2-A. Define /arch:arm8.2.
  • Requisitos de extensão de CPU ARMv8.3-A (ARM64). Ativa os requisitos do ARMv8.3-A. Define /arch:arm8.3.
  • Requisitos de extensão do CPU ARMv8.4-A (ARM64). Ativa os requisitos ARMv8.4-A. Define /arch:arm8.4.
  • Requisitos de extensão de CPU ARMv8.5-A (ARM64). Ativa os requisitos ARMv8.5-A. Define /arch:arm8.5.
  • Requisitos de extensão de CPU ARMv8.6-A (ARM64). Ativa os requisitos ARMv8.6-A. Define /arch:arm8.6.
  • Requisitos de extensão de CPU ARMv8.7-A (ARM64). Ativa os requisitos do ARMv8.7-A. Define /arch:arm8.7.
  • Requisitos de extensão de CPU ARMv8.8-A (ARM64). Ativa os requisitos do ARMv8.8-A. Define /arch:arm8.8.
  • Sem Instruções Melhoradas - Desativa as instruções melhoradas para builds x86. Define /arch:IA32.
  • Não Definir - Não define explicitamente uma /arch opção.

Habilite o uso de instruções encontradas em processadores que suportam conjuntos de instruções avançados. Por exemplo, as melhorias SSE, SSE2, AVX e AVX2 para IA-32, e as melhorias AVX e AVX2 para x64. Atualmente /arch:SSE e /arch:SSE2 só estão disponíveis quando se constrói 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 desativado com /arch:IA32. Para obter mais informações, consulte /arch (x86), /arch (x64), /arch (ARM64)e /arch (ARM).

Choices

  • Streaming de Extensões SIMD (x86) - Permite Streaming de Extensões SIMD. Define /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Ativa Streaming SIMD Extensions 2. Define /arch:SSE2.
  • Extensões Vetoriais Avançadas (X86/X64) - Permite extensões vetoriais avançadas. Define /arch:AVX.
  • Extensões Vetoriais Avançadas 2 (X86/X64) - Permite Extensões Vetoriais Avançadas 2. Define /arch:AVX2.
  • Extensões Vetoriais Avançadas 512 (X86/X64) - Ativam as Extensões Vetoriais Avançadas 512. Define /arch:AVX512.
  • Advanced Vector Extensions AVX10.1 (X86/X64) - Ativa a Advanced Vector Extensions 10 versão 1. Define /arch:AVX10.1.
  • Extensões de Virtualização (ARM). Permite extensões de virtualização ARM. Define /arch:ARMv7VE.
  • Instruções ARM VFPv4 (ARM). Ativa as instruções ARM VFPv4. Define /arch:VFPv4.
  • Requisitos de extensão de CPU ARMv8.0-A (ARM64). Ativa os requisitos ARMv8.0-A. Define /arch:arm8.0.
  • Requisitos de extensão de CPU ARMv8.1-A (ARM64). Ativa os requisitos ARMv8.1-A. Define /arch:arm8.1.
  • Requisitos de extensão do CPU ARMv8.2-A (ARM64). Ativa os requisitos do ARMv8.2-A. Define /arch:arm8.2.
  • Requisitos de extensão de CPU ARMv8.3-A (ARM64). Ativa os requisitos do ARMv8.3-A. Define /arch:arm8.3.
  • Requisitos de extensão do CPU ARMv8.4-A (ARM64). Ativa os requisitos ARMv8.4-A. Define /arch:arm8.4.
  • Requisitos de extensão de CPU ARMv8.5-A (ARM64). Ativa os requisitos ARMv8.5-A. Define /arch:arm8.5.
  • Requisitos de extensão de CPU ARMv8.6-A (ARM64). Ativa os requisitos ARMv8.6-A. Define /arch:arm8.6.
  • Requisitos de extensão de CPU ARMv8.7-A (ARM64). Ativa os requisitos do ARMv8.7-A. Define /arch:arm8.7.
  • Requisitos de extensão de CPU ARMv8.8-A (ARM64). Ativa os requisitos do ARMv8.8-A. Define /arch:arm8.8.
  • Sem Instruções Melhoradas - Desativa as instruções melhoradas para builds x86. Define /arch:IA32.
  • Não Definir - Não define explicitamente uma /arch opção.

Choices

  • Streaming SIMD Extensions - Streaming SIMD Extensions. Conjuntos /arch:SSE
  • Streaming SIMD Extensões 2 - Streaming SIMD Extensões 2. Conjuntos /arch:SSE2
  • Advanced Vetor Extensions - Extensões vetoriais avançadas. Conjuntos /arch:AVX
  • Advanced Vetor Extensions 2 - Extensões vetoriais avançadas 2. Conjuntos /arch:AVX2
  • Sem instruções melhoradas - Sem instruções melhoradas. Conjuntos /arch:IA32
  • Não definido - não definido.

Ativar Comprimento Vetorial

Permitir escolher o comprimento vetorial para as flags /arch:AVX512 e /arch:AVX10.x. Os valores permitidos são 256 e 512 bits (X86/X64).

Modelo de Ponto Flutuante

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

Choices

  • Preciso - Padrão. Melhora a consistência dos testes de ponto flutuante para igualdade e desigualdade.
  • Estrito - O modelo de ponto flutuante mais rigoroso. /fp:strict faz com que fp_contract fique desligado e fenv_access fique ligado. /fp:except está implícito e pode ser desativado especificando /fp:except-explicitamente . Quando usado com /fp:except- o /fp:strict, impõe semânticas rigorosas de ponto flutuante, mas sem considerar eventos excecionais.
  • Rápido - Cria o código mais rápido na maioria dos casos.

Ativar exceções de ponto flutuante

Modelo de exceção de ponto flutuante confiável. As exceções serão levantadas imediatamente após serem acionadas. Define /fp:except.

Criar imagem Hotpatchable

Quando o hotpatching está ativado, o compilador garante que a primeira instrução de cada função seja de dois bytes, conforme necessário para o hot patching. Define /hotpatch.

Mitigação do espectro

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

Choices

  • Ativado - Ativar a mitigação para Spectre para CVE 2017-5753.
  • Todas as Cargas - Ativar a mitigação do Spectre em todas as cargas.
  • Todas as Cargas de Fluxo de Controlo - Ativar a mitigação Spectre nas cargas de fluxo de controlo.
  • Desativado - Não definido.

Mitigação do espectro

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

Choices

  • Ativada - Ativar a mitigação de Spectre para CVE 2017-5753.
  • Desativado - Não definido.

Ativar a Mitigação de Erratas Intel JCC

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

Ativar Metadados de Continuação de EH

Gera uma lista ordenada de todos os alvos válidos de continuação de tratamento de exceções para um binário, usado em tempo de execução para validação RIP. Atualmente disponível para builds x64. Define /guard:ehcont.

Habilitar Retornos Assinados

Permite devoluções assinadas, que ajudam a detetar e prevenir tentativas de despacho para blocos ilegais a partir de devoluções de função. Atualmente disponível para versões ARM64. Define /guard:signret.

Propriedades da linguagem C/C++

Desativar extensões de idioma

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

Trate WChar_t como tipo nativo

Quando ativa esta propriedade, o tipo wchar_t torna-se um tipo nativo que corresponde a __wchar_t , da mesma forma que short corresponde a __int16. /Zc:wchar_t está ativado por padrão.

Conformidade de força no escopo For Loop

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

Remover código e dados não referenciados

Quando ativa esta propriedade, o compilador deixa de gerar informação de símbolos para código e dados 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 cast de acordo com o padrão C++11.

Ativar informações de tipo Run-Time

Adiciona código para verificar tipos de objetos C++ em tempo de execução (informação de tipos de execução, ou RTTI). Conjuntos /GR, /GR-.

Suporte OpenMP

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

Padrão da linguagem C++

Determina o padrão da linguagem C++ que o compilador aplica. O valor padrão não define uma opção padrão, então o compilador usa sua configuração padrão C++14. Se selecionares um valor específico, a opção correspondente /std do compilador é definida.

Choices

  • Predefinido (ISO C++14 Standard)
  • Norma ISO C++14 (/std:c++14)
  • Norma ISO C++17 (/std:c++17)
  • Norma ISO C++20 (/std:c++20)
  • Pré-visualização - Norma ISO C++23 (/std:c++23preview)
  • Prévia - Funcionalidades do mais recente rascunho de trabalho para C++ (/std:c++latest)

Padrão de linguagem C

Determina o padrão da linguagem C que o compilador aplica. O valor padrão não define uma opção padrão, então o compilador usa sua configuração MSVC herdada padrão. Se selecionares um valor específico, a opção correspondente /std do compilador é definida.

Choices

  • Padrão (MSVC herdado)
  • Norma ISO C11 (/std:c11)
  • Norma ISO C17 (2018) (/std:c17)
  • Pré-visualização - Funcionalidades do Último Rascunho de Trabalho em C (/std:clatest)

Modo de conformidade

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

Habilitar módulos experimentais de biblioteca padrão C++

Suporte experimental para os módulos C++ TS e Standard Library.

Crie 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 está 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 em C/C++

Cabeçalho pré-compilado

Criar/usar cabeçalho pré-compilado

Permite a criação ou o uso de um cabeçalho pré-compilado durante a compilação. Conjuntos /Yc, /Yu.

Choices

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

Arquivo de cabeçalho pré-compilado

Especifica o nome do ficheiro de cabeçalho que o compilador usa para criar ou aceder a um cabeçalho pré-compilado. Conjuntos /Yc, /Yu.

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

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

Propriedades dos ficheiros de saída C/C++

Expandir fonte atribuída

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

Saída do Montador

Especifica o conteúdo do ficheiro de saída em linguagem assembly. Conjuntos /FA, /FAc, /FAs, /FAcs.

Choices

  • Sem anúncio - Sem anúncio.
  • Listagem apenas de Assembly - Código Assembly: .asm.
  • Em linguagem assembly e código máquina - Código máquina e linguagem assembly: .cod.
  • Assemblagem com código-fonte - Código-fonte e código assembly: .asm.
  • Linguagem assembly, Código de Máquina e Código-fonte - Linguagem assembly, código de máquina e código-fonte: .cod.

Usar Unicode para listagem do Assembler

Faz com que o arquivo de saída seja criado no formato UTF-8.

Localização da lista ASM

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

Nome do ficheiro de saída do módulo

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

Nome do ficheiro de dependências de módulos

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

Nome do arquivo do objeto

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

Nome do arquivo do banco de dados do programa

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

Gerar arquivos de documentação XML

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

Nome do arquivo de documentação XML

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

Gerar Ficheiro de Dependências de Origem

Gera um ficheiro JSON com a lista de todos os ficheiros que o compilador usou para compilar a fonte. Define /sourceDependencies.

Nome do ficheiro de dependências de origem

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

Propriedades de Navegação de Informação em C/C++

Ativar informações de navegação

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

Procurar Ficheiro de Informação

Especifica um nome opcional para o ficheiro de informação do navegador. Define /FR<o nome>.

Propriedades de inclusões externas de C/C++

Tratar arquivos incluídos com colchetes angulares como externos

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

Nível de aviso de cabeçalho externo

Selecione o quão rigoroso você deseja que o compilador seja sobre erros de código em cabeçalhos externos. Esta propriedade define a opção do /external:Wn compilador. Se esse valor for definido como Herdar Nível de Aviso do Projeto ou o padrão, outras /external opções serão ignoradas.

Diagnóstico de modelo em cabeçalhos externos

Especifica se o nível de aviso deve ser avaliado ao longo de uma sequência de instanciação de modelo. Defina esta propriedade como Sim para definir a opção do /external:templates- compilador.

Desativar 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 /analyze:external- compilador.

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

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

Propriedades avançadas em C/C++

Convenção de Chamada

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

Choices

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

Compilar como

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

Choices

  • Padrão - Padrão.
  • Compilar como código C (/TC) - Compilar 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) - Compilar arquivos de origem especificados como código C++. Por defeito, todos os ficheiros fonte que não têm uma extensão .c, .ixx, .cppm ou .h, ou que não têm qualquer extensão, são compilados como C++.
  • Compilar como código de módulo C++ (/interface) - Compilar arquivos de origem especificados como código de módulo C++. Por defeito, os ficheiros com extensão .ixx ou .cppm são compilados como código de módulo C++.
  • Compile as C++ Module Internal Partition (/internalPartition) - Compile os ficheiros fonte especificados como partição interna do módulo C++.
  • Compilar como Unidade de Cabeçalho C++ (/exportHeader) - Compilar ficheiros de origem especificados como unidade de cabeçalho C++. Por defeito, os ficheiros com uma extensão .h ou sem extensão são compilados como unidades de cabeçalho.

Desativar avisos específicos

Desative os números de aviso especificados. Coloque os números de aviso numa lista delimitada por ponto e vírgula. Define /wd<número>.

Arquivo de inclusão forçada

Especifica um ou mais ficheiros de inclusão forçada. Define /FI<o nome>.

Arquivo de #using forçado

Especifica um ou mais arquivos de #using forçada. Define /FU<o nome>.

Mostrar Inclusões

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

Usar caminhos completos

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

Omitir nome de biblioteca padrão

Especifica a exclusão dos nomes de bibliotecas predefinidas nos ficheiros .obj. Define /Zl.

Relatório de erros do compilador interno

Observação

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

Tratar avisos específicos como erros

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

Opções Adicionais

Opções adicionais.