Opções de compilador listadas por categoria

Este artigo contém uma lista categórica de opções do compilador. Para obter uma lista em ordem alfabética, consulte Opções do compilador listadas em ordem alfabética.

Otimização

Opção Finalidade
/favor:<blend|AMD64|INTEL64|ATOM> Produz código otimizado para uma arquitetura específica ou um intervalo de arquiteturas.
/O1 Cria um código pequeno.
/O2 Cria um código rápido.
/Ob<n> Controla a expansão embutida.
/Od Desabilita a otimização.
/Og Preterido. Usa otimizações globais.
/Oi[-] Gera funções intrínsecas.
/Os Favorece código pequeno.
/Ot Favorece código rápido.
/Ox Um subconjunto de /O2 que não inclui /GF ou /Gy.
/Oy Omita o ponteiro do quadro. (apenas x86)

Geração de código

Opção Finalidade
/arch:<IA32|SSE|SSE2|AVX|AVX2|AVX512> Requisitos mínimos de arquitetura da CPU IA32, SSE e SSE2 são apenas x86.
/clr Produz um arquivo de saída a ser executado no Common Language Runtime.
/clr:implicitKeepAlive- Desativar a emissão implícita de System::GC::KeepAlive(this).
/clr:initialAppDomain Habilitar o comportamento do AppDomain inicial do Visual C++ 2002.
/clr:netcore Produzir assemblies direcionados ao runtime do .NET Core.
/clr:noAssembly Não produzir um assembly.
/clr:nostdimport Não importar nenhum assembly necessário implicitamente.
/clr:nostdlib Ignorar o diretório do sistema do .NET Framework ao pesquisar por assemblies.
/clr:pure Produzir um arquivo de saída somente IL (sem código executável nativo).
/clr:safe Produzir um arquivo de saída somente IL verificável.
/EHa Habilitar o tratamento de exceção do C++ (com exceções de SEH).
/EHc extern "C" usa como padrão nothrow.
/EHr Sempre gerar verificações de término de runtime noexcept.
/EHs Habilitar o tratamento de exceções do C++ (sem exceções SEH).
/fp:contract Considerar contrações de ponto flutuante ao gerar código.
/fp:except[-] Considerar exceções de ponto flutuante ao gerar código.
/fp:fast Modelo de ponto flutuante "rápido"; os resultados são menos previsíveis.
/fp:precise Modelo de ponto flutuante "preciso"; os resultados são previsíveis.
/fp:strict Modelo de ponto flutuante "estrito" (implica /fp:except).
/fpcvt:BC Compatibilidade de conversão de ponto flutuante para inteiro sem sinal.
/fpcvt:IA Comportamento de conversão de ponto flutuante nativo Intel em inteiro sem sinal.
/fsanitize Habilita a compilação de instrumentação de limpeza, como AddressSanitizer.
/fsanitize-coverage Habilita a compilação da instrumentação de cobertura de código para bibliotecas como o LibFuzzer.
/GA Otimiza para aplicativos do Windows.
/Gd Usa a convenção de chamada __cdecl. (apenas x86)
/Ge Preterido. Ativa investigações de pilha.
/GF Habilita pooling de cadeia de caracteres.
/Gh Chama a função de gancho _penter.
/GH Chama a função de gancho _pexit.
/GL[-] Habilita a otimização de todo o programa.
/Gm[-] Preterido. Habilita recompilação mínima.
/Gr Usa a convenção de chamada __fastcall. (apenas x86)
/GR[-] Habilita RTTI (informações de tipo de tempo de execução).
/GS[-] Verifica a segurança do buffer.
/Gs[n] Controla investigações de pilha.
/GT Dá suporte à segurança de fibra para dados alocados usando armazenamento de thread local estático.
/Gu[-] Verificar funções distintas que têm endereços distintos.
/guard:cf[-] Adiciona verificações de segurança de proteção do fluxo de controle.
/guard:ehcont[-] Habilita metadados de continuação do EH.
/Gv Usa a convenção de chamada __vectorcall. (somente x86 e x64)
/Gw[-] Habilita a otimização de dados globais de todo o programa.
/GX[-] Preterido. Habilita o tratamento síncrono de exceções. Use /EH em vez disso.
/Gy[-] Habilita a vinculação no nível de função.
/Gz Usa a convenção de chamada __stdcall. (apenas x86)
/GZ Preterido. Habilita as verificações rápidas. (Mesmo que /RTC1)
/homeparams Força os parâmetros passados em registros a serem gravados em seus locais na pilha mediante a entrada da função. Esta opção do compilador se destina apenas aos compiladores x64 (nativos e de compilação cruzada).
/hotpatch Cria uma imagem capaz de aplicar patches sob demanda.
/jumptablerdata Coloque tabelas de salto de instrução de caso de alternância .rdata na seção.
/Qfast_transcendentals Gera transcendentais rápidos.
/QIfist Preterido. Suprime a chamada da função auxiliar _ftol quando é necessária uma conversão de um tipo de ponto flutuante para um tipo integral. (apenas x86)
/Qimprecise_fwaits Remove comandos fwait dentro de blocos try.
/QIntel-jcc-erratum Atenua o impacto no desempenho da atualização de microcódigo da errata do Intel JCC.
/Qpar Habilita a paralelização automática de loops.
/Qpar-report:n Habilita os níveis de relatório para paralelização automática.
/Qsafe_fp_loads Usa instruções de movimento de inteiro para valores de ponto flutuante e desabilita determinadas otimizações de carregamento de ponto flutuante.
/Qspectre[-] Habilitar mitigações para CVE 2017-5753, para uma classe de ataques Spectre.
/Qspectre-load Gerar instruções de serialização para cada instrução de carga.
/Qspectre-load-cf Gerar instruções de serialização para cada instrução de fluxo de controle que carrega memória.
/Qvec-report:n Habilita níveis de relatório para vetorização automática.
/RTC1 Habilitar verificações de runtime rápido (equivalente a /RTCsu).
/RTCc Converter em verificações de tipo menores em tempo de execução.
/RTCs Habilitar verificações de runtime do registro de ativação.
/RTCu Habilita verificações de uso local não inicializado.
/volatile:iso Semântica de aquisição/liberação não garantida em acessos voláteis.
/volatile:ms Semântica de aquisição/liberação garantida em acessos voláteis.

Arquivos de saída

Opção Finalidade
/doc Processa comentários de documentação para um arquivo XML.
/FA Configura um arquivo de listagem de assembly.
/Fa Cria um arquivo de listagem de assembly.
/Fd Renomeia o arquivo de banco de dados do programa.
/Fe Renomeia o arquivo executável.
/Fi Especifica o nome do arquivo de saída pré-processado.
/Fm Cria um arquivo de mapa.
/Fo Cria um arquivo de objeto.
/Fp Especifica um nome de arquivo de cabeçalho pré-compilado.
/FR, /Fr Arquivos de navegador .sbr gerados por nome. /Fr foi preterido.
/Ft<dir> Local dos arquivos de cabeçalho gerados para #import.

Pré-processador

Opção Finalidade
/AI<dir> Especifica um diretório de pesquisa para resolver referências de arquivo passadas para a diretiva #using.
/C Preserva comentários durante o pré-processamento.
/D<name>{=|#}<text> Define constantes e macros.
/E Copia a saída do pré-processador para a saída padrão.
/EP Copia a saída do pré-processador para a saída padrão.
/FI<file> Pré-processa o arquivo de inclusão especificado.
/FU<file> Força o uso de um nome de arquivo como se ele tivesse sido passado para a diretiva #using.
/Fx Mescla o código injetado com o arquivo de origem.
/I<dir> Pesquisa um diretório para incluir arquivos.
/P Grava a saída do pré-processador em um arquivo.
/PD Imprimir todas as definições de macro.
/PH Gerar #pragma file_hash durante o pré-processamento.
/U<name> Remove uma macro predefinida.
/u Remove todas as macros predefinidas.
/X Ignora o diretório de inclusão padrão.

Unidades/módulos de cabeçalho

Opção Finalidade
/exportHeader Criar os arquivos de unidades de cabeçalho (.ifc) especificados pelos argumentos de entrada.
/headerUnit Especificar onde localizar o arquivo de unidade de cabeçalho (.ifc) para o cabeçalho especificado.
/headerName Compilar uma unidade de cabeçalho com base no cabeçalho especificado.
/ifcOutput Especifique o nome do arquivo de saída ou o diretório para arquivos criados .ifc .
/interface Tratar o arquivo de entrada como uma unidade de interface do módulo.
/internalPartition Tratar o arquivo de entrada como uma unidade de partição interna.
/reference Use o módulo IFC nomeado.
/scanDependencies Listar dependências de unidade de módulo e cabeçalho no formulário JSON Padrão C++.
/sourceDependencies Listar todas as dependências de nível de origem.
/sourceDependencies:directives Listar dependências de unidade de módulo e cabeçalho.
/translateInclude Tratar #include como import.

Idioma

Opção Finalidade
/await Habilitar extensões de corrotina (funções retomáveis).
/await:strict Habilite o suporte à corrotina padrão do C++20 com versões de linguagem anteriores.
/constexpr:backtrace<N> Mostrar N avaliações de constexpr no diagnóstico (padrão: 10).
/constexpr:depth<N> Limite de profundidade de recursão para avaliação de constexpr (padrão: 512).
/constexpr:steps<N> Terminar a avaliação de constexpr após N etapas (padrão: 100000)
/openmp Habilita #pragma omp no código-fonte.
/openmp:experimental Habilitar extensões de linguagem OpenMP 2.0 e selecionar extensões de linguagem OpenMP 3.0 e posteriores.
/openmp:llvm Extensões de linguagem OpenMP usando o runtime LLVM.
/permissive[-] Definir o modo de conformidade padrão.
/std:c++14 C++14 ISO/IEC padrão 14882:2014 (padrão).
/std:c++17 C++17 ISO/IEC padrão 14882:2017.
/std:c++20 C++20 ISO/IEC padrão 14882:2020.
/std:c++latest As versões prévias do recurso padrão do C++ mais recentes.
/std:c11 C11 ISO/IEC padrão 9899:2011.
/std:c17 C17 ISO/IEC padrão 9899:2018.
/std:clatest Os recursos de visualização padrão C mais recentes do rascunho.
/vd{0|1|2} Suprime ou habilita membros da classe vtordisp ocultos.
/vmb Usa a melhor base de ponteiros para membros.
/vmg Usa a generalidade completa de ponteiros para membros.
/vmm Declara a herança múltipla.
/vms Declara a herança única.
/vmv Declara a herança virtual.
/Z7 Gera informações de depuração compatíveis com C 7.0.
/Za Desabilita algumas extensões de linguagem C89 no código C.
/Zc:__cplusplus[-] Habilitar a macro __cplusplus para relatar o padrão com suporte (desativada por padrão).
/Zc:__STDC__ Habilite a __STDC__ macro para relatar que o padrão C é suportado (desativado por padrão).
/Zc:alignedNew[-] Habilitar a alocação dinâmica de alinhamento excessivo do C++17 (ativada por padrão no C++17).
/Zc:auto[-] Aplicar o novo significado do Padrão C++ para auto(ativada por padrão).
/Zc:char8_t[-] Habilitar ou desabilitar o suporte literal nativo u8 do C++20 como const char8_t (desativada por padrão, exceto em /std:c++20).
/Zc:enumTypes[-] Habilite regras C++ padrão para tipos base inferidos enum (Off b y default, not implied by /permissive-).
/Zc:externC[-] Aplicar regras Padrão C++ para funções extern "C" (implícitas para /permissive-).
/Zc:externConstexpr[-] Habilitar o vínculo externo para variáveis constexpr (desativada por padrão).
/Zc:forScope[-] Aplicar regras de escopo for Padrão do C++ (ativadas por padrão).
/Zc:gotoScope Impor regras C++ goto padrão em torno da inicialização de variável local (implícita por /permissive-).
/Zc:hiddenFriend[-] Aplicar regras de amigo oculto padrão do C++ (implícitas por /permissive-)
/Zc:implicitNoexcept[-] Habilitar noexcept implícito em funções necessárias (ativada por padrão).
/Zc:inline[-] Remover funções ou dados não referenciados se forem COMDAT ou tiverem apenas vínculo interno (desativada por padrão).
/Zc:lambda[-] Habilitar o novo processador lambda para verificações sintáticas no modo de conformidade em lambdas genéricos.
/Zc:noexceptTypes[-] Aplicar regras noexcept do C++17 (ativadas por padrão no C++17 ou posterior).
/Zc:nrvo[-] Habilite elisões opcionais de cópia e movimentação (ativadas por padrão em /O2, /permissive-ou /std:c++20 posteriores).
/Zc:preprocessor[-] Usar o novo pré-processador em conformidade (desativada por padrão, exceto no C11/C17).
/Zc:referenceBinding[-] Um UDT temporário não será associado a uma referência lvalue não constante (desativada por padrão).
/Zc:rvalueCast[-] Aplicar regras de conversão de tipo explícita padrão do C++ (desativada por padrão).
/Zc:sizedDealloc[-] Habilitar funções de desalocação de tamanho global do C++14 (ativada por padrão).
/Zc:strictStrings[-] Desabilitar o literal de cadeia de caracteres para conversão char* ou wchar_t* (desativada por padrão).
/Zc:templateScope[-] Impor regras de sombreamento de parâmetro de modelo C++ padrão (desativado por padrão).
/Zc:ternary[-] Aplicar regras de operador condicional em tipos operando (desativada por padrão).
/Zc:threadSafeInit[-] Habilitar a inicialização estática local thread-safe (ativada por padrão).
/Zc:throwingNew[-] Supor que operator new gere no caso de falha (desativada por padrão).
/Zc:tlsGuards[-] Gerar verificações de runtime para a inicialização da variável TLS (ativado por padrão).
/Zc:trigraphs Habilitar trígrafos (obsoleta, desativada por padrão).
/Zc:twoPhase[-] Use o comportamento de análise de modelo não conforme (em conformidade por padrão).
/Zc:wchar_t[-] wchar_t é um tipo nativo, não um typedef (ativada por padrão).
/Zc:zeroSizeArrayNew[-] Chamar membro new/delete para matrizes de tamanho 0 de objetos (ativado por padrão).
/Ze Preterido. Habilita extensões de linguagem C89.
/Zf Melhora o tempo de geração do PDB em builds paralelos.
/ZH:[MD5|SHA1|SHA_256] Especifica MD5, SHA-1 ou SHA-256 para somas de verificação em informações de depuração.
/ZI Inclui informações de depuração em um banco de dados do programa compatível com Editar e Continuar. (apenas x86)
/Zi Gera informações completas de depuração.
/Zl Remove o nome da biblioteca padrão do arquivo .obj.
/Zo[-] Gerar informações de depuração mais avançadas para o código otimizado.
/Zp[n] Empacota membros da estrutura.
/Zs Verifica apenas a sintaxe.
/ZW Produz um arquivo de saída a ser executado no Windows Runtime.

Vinculação

Opção Finalidade
/F Define o tamanho da pilha.
/LD Cria uma biblioteca de vínculo dinâmico.
/LDd Cria uma biblioteca de vínculo dinâmico de depuração.
/link Passa a opção especificada para LINK.
/LN Cria um MSIL .netmodule.
/MD Compila para criar uma DLL com multithread usando MSVCRT.lib.
/MDd Compila para criar DLL com multithread de depuração usando MSVCRTD.lib.
/MT Compila para criar um arquivo executável com multithread usando LIBCMT.lib.
/MTd Compila para criar um arquivo executável com multithread de depuração usando LIBCMTD.lib.

Diversos

Opção Finalidade
/? Lista as opções do compilador.
@ Especifica um arquivo de resposta.
/analyze Habilita a análise de código.
/bigobj Aumenta o número de seções endereçáveis em um arquivo .obj.
/c Compila sem vinculação.
/cgthreads Especifica o número de threads cl.exe a ser usado na otimização e na geração de código.
/errorReport Preterido. As configurações do Relatório de Erros do Windows (WER) controlam o relatório de erros.
/execution-charset Definir o conjunto de caracteres de execução.
/fastfail Habilitar o modo de falha rápida.
/FC Exibe o caminho completo dos arquivos de código-fonte passados para cl.exe no texto de diagnóstico.
/FS Força a serialização de gravações no arquivo PDB por meio de MSPDBSRV.EXE.
/H Preterido. Restringe o tamanho de nomes externos (públicos).
/HELP Lista as opções do compilador.
/J Altera o tipo char padrão.
/JMC Dá suporte à depuração nativa do Apenas Meu Código do C++.
/kernel O compilador e o vinculador criam um binário que pode ser executado no kernel do Windows.
/MP Cria vários arquivos de origem ao mesmo tempo.
/nologo Suprime a exibição da faixa de logon.
/presetPadding Inicializar em zero o preenchimento para tipos de classe baseados em pilha.
/showIncludes Exibe uma lista de todos os arquivos de inclusão durante a compilação.
/source-charset Definir conjunto de caracteres de origem.
/Tc Especifica um arquivo de origem do C.
/TC Especifica que todos os arquivos de origem são C.
/Tp Especifica um arquivo de origem do C++.
/TP Especifica que todos os arquivos de origem são C++.
/utf-8 Define conjunto de caracteres de origem e execução como UTF-8.
/V Preterido. Define a cadeia de caracteres da versão.
/validate-charset Validar arquivos UTF-8 somente para caracteres compatíveis.
/volatileMetadata Gerar metadados em acessos de memória volátil.
/Yc Criar arquivo .PCH.
/Yd Preterido. Coloca informações de depuração completas em todos os arquivos de objeto. Use /Zi em vez disso.
/Yl Injeta uma referência PCH durante a criação de uma biblioteca de depuração.
/Yu Usa um arquivo de cabeçalho pré-compilado durante a compilação.
/Y- Ignora todas as outras opções de compilador do cabeçalho pré-compilado na compilação atual.
/Zm Especifica o limite de alocação da memória do cabeçalho pré-compilado.

Diagnósticos

Opção Finalidade
/diagnostics:caret[-] Formato de diagnóstico: imprime a coluna e a linha de origem indicada.
/diagnostics:classic Usar o formato de diagnóstico herdado.
/diagnostics Formato de diagnóstico: imprime informações da coluna.
/external:anglebrackets Tratar todos os cabeçalhos incluídos por meio de <> como externos.
/external:env:<var> Especifica uma variável de ambiente com locais de cabeçalhos externos.
/external:I <path> Especifica o local dos cabeçalhos externos.
/external:templates[-] Avalia o nível de aviso na cadeia de instanciação do modelo.
/external:W<n> Define o nível de aviso para cabeçalhos externos.
/options:strict Opções do compilador não reconhecidas são erros.
/sdl Habilitar mais recursos de segurança e avisos.
/w Desabilitar todos os avisos.
/W0, , /W2, , /W1/W3/W4 Define o nível de aviso de saída.
/w1<n>, , , /w2<n>/w3<n>/w4<n> Define o nível de aviso para o aviso especificado.
/Wall Habilita todos os avisos, inclusive avisos desabilitados por padrão.
/wd<n> Desabilita o aviso especificado.
/we<n> Trata o aviso especificado como um erro.
/WL Habilita o diagnóstico em uma linha para mensagens de erro e aviso durante a compilação do código-fonte do C++ da linha de comando.
/wo<n> Exibe o aviso especificado apenas uma vez.
/Wv:xx[.yy[.zzzzz]] Desabilita os avisos introduzidos após a versão especificada do compilador.
/WX Tratar avisos como erros.

Opções Experimentais

As opções experimentais só podem ser compatíveis com determinadas versões do compilador. Eles também podem se comportar de forma diferente em diferentes versões do compilador. Geralmente, a melhor ou única documentação para opções experimentais está no Blog da Equipe do Microsoft C++.

Opção Finalidade
/experimental:log Permite a saída SARIF estruturada experimental.
/experimental:module Habilitar o suporte a módulo experimental.

Opções do compilador preteridas e removidas

Opção Finalidade
/clr:noAssembly Preterido. Use /LN (Criar módulo MSIL).
/errorReport Preterido. O relatório de erros é controlado por configurações do WER (Relatório de Erros do Windows).
/experimental:preprocessor Preterido. Habilita o suporte experimental ao pré-processador em conformidade. Use /Zc:preprocessor.
/Fr Preterido. Cria um arquivo de informações de navegação sem variáveis locais.
/Ge Preterido. Ativa investigações de pilha. Ativo por padrão.
/Gm Preterido. Habilita recompilação mínima.
/GX Preterido. Habilita o tratamento síncrono de exceções. Use /EH em vez disso.
/GZ Preterido. Habilita as verificações rápidas. Use /RTC1 em vez disso.
/H Preterido. Restringe o tamanho de nomes externos (públicos).
/Og Preterido. Usa otimizações globais.
/QIfist Preterido. Uma vez usado para especificar como converter de um tipo de ponto flutuante em um tipo integral.
/V Preterido. Define a cadeia de caracteres da versão de arquivo .obj.
/Wp64 Obsoleto. Detecta problemas de portabilidade de 64 bits.
/Yd Preterido. Coloca informações de depuração completas em todos os arquivos de objeto. Use /Zi em vez disso.
/Zc:forScope- Preterido. Desabilita conformidade para escopo de loop.
/Ze Preterido. Habilita extensões de linguagem.
/Zg Removido no Visual Studio 2015. Gera protótipos de função.

Confira também

Referência de compilação C/C++
Opções do compilador MSVC
Sintaxe de linha de comando do compilador MSVC