Opzioni del compilatore elencate per categoria

In questo articolo viene fornito un elenco organizzato per categorie delle opzioni del compilatore. Per un elenco alfabetico, vedere Opzioni del compilatore elencate alfabeticamente.

Ottimizzazione

Opzione Scopo
/favor:<blend|AMD64|INTEL64|ATOM> Genera codice ottimizzato per un'architettura specifica o per una gamma di architetture.
/O1 Effettua creazioni in base alla dimensione del codice.
/O2 Effettua creazioni in base alla velocità del codice.
/Ob<n> Controlla l'espansione inline.
/Od Disabilita l'ottimizzazione.
/Og Deprecato. Usa le ottimizzazioni globali.
/Oi[-] Genera funzioni intrinseche.
/Os Ottimizza per dimensione codice.
/Ot Ottimizza per velocità codice.
/Ox Subset di /O2 che non include /GF o /Gy.
/Oy Omette i puntatori ai frame. (solo x86)

Generazione codice

Opzione Scopo
/arch:<IA32|SSE|SSE2|AVX|AVX2|AVX512> Requisiti minimi dell'architettura della CPU. IA32, S edizione Standard e S edizione Standard 2 sono solo x86.
/clr Genera un file di output da eseguire in Common Language Runtime.
/clr:implicitKeepAlive- Disattivare l'emissione implicita di System::GC::KeepAlive(this).
/clr:initialAppDomain Abilitare il comportamento iniziale di AppDomain di Visual C++ 2002.
/clr:netcore Produrre assembly destinati al runtime di .NET Core.
/clr:noAssembly Non produrre un assembly.
/clr:nostdimport Non importare in modo implicito gli assembly necessari.
/clr:nostdlib Ignorare la directory .NET Framework di sistema durante la ricerca di assembly.
/clr:pure Produrre un file di output solo IL (nessun codice eseguibile nativo).
/clr:safe Produrre un file di output verificabile solo IL.
/EHa Abilitare la gestione delle eccezioni C++ (con eccezioni edizione Standard H).
/EHc Il valore predefinito di extern "C" è nothrow.
/EHr Generare noexcept sempre controlli di terminazione del runtime.
/EHs Abilitare la gestione delle eccezioni C++ (nessuna eccezione edizione Standard H).
/fp:contract Prendere in considerazione le contrazioni a virgola mobile durante la generazione di codice.
/fp:except[-] Prendere in considerazione le eccezioni a virgola mobile durante la generazione di codice.
/fp:fast Modello a virgola mobile "veloce" ; i risultati sono meno prevedibili.
/fp:precise modello a virgola mobile "precise" ; i risultati sono prevedibili.
/fp:strict Modello a virgola mobile "strict" (implica /fp:except).
/fpcvt:BC Conversione da virgola mobile compatibile con le versioni precedenti a interi senza segno.
/fpcvt:IA Intel a virgola mobile nativa a un comportamento di conversione integer senza segno.
/fsanitize Abilita la compilazione della strumentazione di purificazione, ad esempio AddressSanitizer.
/fsanitize-coverage Abilita la compilazione della strumentazione code coverage per librerie come LibFuzzer.
/GA Ottimizza per le applicazioni Windows.
/Gd Usa la convezione di chiamata __cdecl . (solo x86)
/Ge Deprecato. Attiva le ricerche dello stack.
/GF Attiva la condivisione delle stringhe.
/Gh Chiama la funzione hook _penter.
/GH Chiama la funzione hook _pexit.
/GL[-] Attiva l'ottimizzazione dell'intero programma.
/Gm[-] Deprecato. Attiva una ricompilazione minima.
/Gr Usa la convezione di chiamata __fastcall . (solo x86)
/GR[-] Attiva RTTI (Run-Time Type Information).
/GS[-] Controlla la sicurezza del buffer.
/Gs[n] Controlla le ricerche dello stack.
/GT Supporta l'indipendenza da fiber per i dati allocati usando l'archiviazione locale di thread statici.
/Gu[-] Assicurarsi che le funzioni distinte abbiano indirizzi distinti.
/guard:cf[-] Aggiunge controlli di sicurezza guard del flusso di controllo.
/guard:ehcont[-] Abilita i metadati di continuazione EH.
/Gv Usa la convezione di chiamata __vectorcall . (solo x86 e x64)
/Gw[-] Abilita l'ottimizzazione dei dati globale per l'intero programma
/GX[-] Deprecato. Attiva la gestione sincrona delle eccezioni. Utilizzare invece /EH.
/Gy[-] Attiva il collegamento a livello di funzione.
/Gz Usa la convezione di chiamata __stdcall . (solo x86)
/GZ Deprecato. Abilita controlli veloci. (Uguale a /RTC1)
/homeparams Forza la scrittura di parametri passati nei registri nei rispettivi percorsi nello stack quando vengono immesse funzioni. Questa opzione del compilatore è solo per i compilatori x64 (compilazione nativa e incrociata).
/hotpatch Crea un'immagine su cui è applicabile una hot patch
/jumptablerdata Inserire le tabelle di salto dell'istruzione switch case nella .rdata sezione .
/Qfast_transcendentals Genera funzioni trascendenti veloci.
/QIfist Deprecato. Disattiva la chiamata della funzione helper _ftol quando è necessario eseguire una conversione da un tipo a virgola mobile a un tipo integrale. (solo x86)
/Qimprecise_fwaits Rimuove i comandi fwait all'interno dei blocchi try .
/QIntel-jcc-erratum Riduce l'impatto sulle prestazioni dell'aggiornamento del microcodice Intel JCC erratum.
/Qpar Abilita la parallelizzazione automatica dei cicli.
/Qpar-report:n Abilita livelli di creazione rapporti per la parallelizzazione automatica.
/Qsafe_fp_loads Usa istruzioni di spostamento Integer per i valori a virgola mobile e disabilita determinate ottimizzazioni di carico a virgola mobile.
/Qspectre[-] Abilitare le mitigazioni per CVE 2017-5753 per una classe di attacchi Spectre.
/Qspectre-load Generare istruzioni di serializzazione per ogni istruzione di caricamento.
/Qspectre-load-cf Generare istruzioni di serializzazione per ogni istruzione del flusso di controllo che carica memoria.
/Qvec-report:n Abilita livelli di creazione rapporti per la vettorializzazione automatica.
/RTC1 Abilitare i controlli di runtime rapidi (equivalente a /RTCsu).
/RTCc Eseguire la conversione in controlli di tipo più piccoli in fase di esecuzione.
/RTCs Abilitare i controlli di runtime dello stack frame.
/RTCu Abilita controlli di utilizzo locali non inizializzati.
/volatile:iso Semantica di acquisizione/rilascio non garantita per gli accessi volatili.
/volatile:ms Semantica di acquisizione/rilascio garantita per gli accessi volatili.

File di output

Opzione Scopo
/doc Elabora commenti sulla documentazione in un file XML.
/FA Configura un file di listato dell'assembly.
/Fa Crea un file di listato dell'assembly.
/Fd Rinomina il file del database di programma.
/Fe Rinomina il file eseguibile.
/Fi Specifica il nome del file di output pre-elaborato.
/Fm Crea un file MAP.
/Fo Crea un file oggetto.
/Fp Specifica un nome del file di intestazione precompilato.
/FR, /Fr Nome dei file del browser generati .sbr . /Fr è stato deprecato.
/Ft<dir> Percorso dei file di intestazione generati per #import.

Preprocessore

Opzione Scopo
/AI<dir> Specifica una directory in cui eseguire la ricerca per risolvere i riferimenti ai file passati alla #using direttiva .
/C Conserva i commenti durante la pre-elaborazione.
/D<name>{=|#}<text> Definisce costanti e macro.
/E Copia l'output del preprocessore in un output standard.
/EP Copia l'output del preprocessore in un output standard.
/FI<file> Pre-elabora il file di inclusione specificato.
/FU<file> Forza l'uso di un nome di file, come se fosse stato passato alla #using direttiva .
/Fx Unisce il codice inserito al file di origine.
/I<dir> Ricerca i file di inclusione in una directory.
/P Scrive l'output del preprocessore in un file.
/PD Stampa tutte le definizioni di macro.
/PH Genera #pragma file_hash durante la pre-elaborazione.
/U<name> Rimuove una macro predefinita.
/u Rimuove tutte le macro predefinite.
/X Ignora la directory di inclusione standard.

Unità/moduli di intestazione

Opzione Scopo
/exportHeader Creare i file delle unità di intestazione (.ifc) specificati dagli argomenti di input.
/headerUnit Specificare dove trovare il file dell'unità di intestazione (.ifc) per l'intestazione specificata.
/headerName Compilare un'unità di intestazione dall'intestazione specificata.
/ifcOutput Specificare il nome o la directory del file di output per i file compilati .ifc .
/interface Considerare il file di input come unità di interfaccia del modulo.
/internalPartition Considerare il file di input come un'unità di partizione interna.
/reference Usare il modulo denominato IFC.
/scanDependencies Elencare le dipendenze del modulo e dell'unità di intestazione nel formato JSON standard C++.
/sourceDependencies Elencare tutte le dipendenze a livello di origine.
/sourceDependencies:directives Elencare le dipendenze del modulo e dell'unità di intestazione.
/translateInclude Considera #include come import.

Lingua

Opzione Scopo
/await Abilitare le estensioni coroutine (funzioni ripristinabili).
/await:strict Abilitare il supporto coroutine C++20 standard con le versioni precedenti del linguaggio.
/constexpr:backtrace<N> Mostra N constexpr valutazioni nella diagnostica (impostazione predefinita: 10).
/constexpr:depth<N> Limite di profondità di ricorsione per constexpr la valutazione (impostazione predefinita: 512).
/constexpr:steps<N> Terminare constexpr la valutazione dopo N passaggi (impostazione predefinita: 100000)
/openmp Abilita #pragma omp nel codice sorgente.
/openmp:experimental Abilitare le estensioni del linguaggio OpenMP 2.0 e selezionare OpenMP 3.0+ estensioni del linguaggio.
/openmp:llvm Estensioni del linguaggio OpenMP che usano il runtime LLVM.
/permissive[-] Impostare la modalità di conformità standard.
/std:c++14 C++14 standard ISO/IEC 14882:2014 (impostazione predefinita).
/std:c++17 C++17 standard ISO/IEC 14882:2017.
/std:c++20 C++20 standard ISO/IEC 14882:2020.
/std:c++latest Le funzionalità di anteprima standard C++ più recenti.
/std:c11 C11 standard ISO/IEC 9899:2011.
/std:c17 C17 standard ISO/IEC 9899:2018.
/std:clatest Le ultime funzionalità di anteprima standard C bozza.
/vd{0|1|2} Disabilita o abilita i membri della classe vtordisp nascosti.
/vmb Usa la base migliore per i puntatori ai membri.
/vmg Usa la generalità completa per i puntatori ai membri.
/vmm Dichiara l'ereditarietà multipla.
/vms Dichiara l'ereditarietà singola.
/vmv Dichiara l'ereditarietà virtuale.
/Z7 Genera informazioni di debug compatibili con C 7.0.
/Za Disabilita alcune estensioni del linguaggio C89 nel codice C.
/Zc:__cplusplus[-] Abilitare la __cplusplus macro per segnalare lo standard supportato (disattivato per impostazione predefinita).
/Zc:__STDC__ Abilitare la __STDC__ macro per segnalare che lo standard C è supportato (disattivato per impostazione predefinita).
/Zc:alignedNew[-] Abilitare l'allocazione dinamica sovraallineare C++17 (per impostazione predefinita in C++17).
/Zc:auto[-] Applicare il nuovo significato C++ Standard per (attivato per auto impostazione predefinita).
/Zc:char8_t[-] Abilitare o disabilitare il supporto dei valori letterali nativi u8 C++20 come const char8_t (disattivato per impostazione predefinita, ad eccezione di /std:c++20).
/Zc:enumTypes[-] Abilitare le regole C++ standard per i tipi di base dedotti enum (off b y default, non implicito da /permissive-).
/Zc:externC[-] Applicare le regole C++ standard per extern "C" le funzioni (implicite da /permissive-).
/Zc:externConstexpr[-] Abilitare il collegamento esterno per constexpr le variabili (disattivato per impostazione predefinita).
/Zc:forScope[-] Applicare le regole di definizione dell'ambito C++ for standard (per impostazione predefinita).
/Zc:gotoScope Applicare regole C++ goto standard per l'inizializzazione delle variabili locali (implicita da /permissive-).
/Zc:hiddenFriend[-] Applicare le regole Friend nascoste C++ standard (implicite da /permissive-)
/Zc:implicitNoexcept[-] Abilitare l'implicito noexcept per le funzioni obbligatorie (attivato per impostazione predefinita).
/Zc:inline[-] Rimuovere funzioni o dati non referenziati se sono COMDAT o hanno solo collegamenti interni (disattivati per impostazione predefinita).
/Zc:lambda[-] Abilitare un nuovo processore lambda per controlli sintattici in modalità di conformità nelle espressioni lambda generiche.
/Zc:noexceptTypes[-] Applicare le regole C++17 noexcept (per impostazione predefinita in C++17 o versione successiva).
/Zc:nrvo[-] Abilitare le elisioni di copia e spostamento facoltative (per impostazione predefinita in /O2, /permissive-o /std:c++20 versione successiva).
/Zc:preprocessor[-] Usare il nuovo preprocessore conforme (disattivato per impostazione predefinita, ad eccezione di C11/C17).
/Zc:referenceBinding[-] Un tipo definito dall'utente temporaneo non verrà associato a un riferimento lvalue non const (disattivato per impostazione predefinita).
/Zc:rvalueCast[-] Applicare le regole di conversione esplicita dei tipi C++ standard (disattivate per impostazione predefinita).
/Zc:sizedDealloc[-] Abilitare le funzioni di deallocazione con dimensioni globali C++14 (per impostazione predefinita).
/Zc:strictStrings[-] Disabilitare la conversione o wchar_t* il valore letterale char* stringa (disattivato per impostazione predefinita).
/Zc:templateScope[-] Applicare le regole di ombreggiatura dei parametri del modello C++ standard (disattivate per impostazione predefinita).
/Zc:ternary[-] Applicare le regole dell'operatore condizionale sui tipi di operando (disattivato per impostazione predefinita).
/Zc:threadSafeInit[-] Abilitare l'inizializzazione statica locale thread-safe (attivata per impostazione predefinita).
/Zc:throwingNew[-] Si supponga di operator new generare un'eccezione in caso di errore (disattivata per impostazione predefinita).
/Zc:tlsGuards[-] Generare controlli di runtime per l'inizializzazione delle variabili TLS (per impostazione predefinita).
/Zc:trigraphs Abilitare i trigrammi (obsoleto, disattivato per impostazione predefinita).
/Zc:twoPhase[-] Usare il comportamento di analisi dei modelli non conformi (conforme per impostazione predefinita).
/Zc:wchar_t[-] wchar_t è un tipo nativo, non un typedef (attivato per impostazione predefinita).
/Zc:zeroSizeArrayNew[-] Chiamare il membro new/delete per matrici di oggetti di dimensioni 0 (per impostazione predefinita).
/Ze Deprecato. Abilita le estensioni del linguaggio C89.
/Zf Migliora il tempo di generazione PDB nelle compilazioni parallele.
/ZH:[MD5|SHA1|SHA_256] Specifica MD5, SHA-1 o SHA-256 per i checksum nelle informazioni di debug.
/ZI Include informazioni di debug in un database di programma compatibile con Modifica e continuazione. (solo x86)
/Zi Genera informazioni di debug complete.
/Zl Rimuove il nome predefinito della libreria dal .obj file.
/Zo[-] Generare informazioni di debug più avanzate per il codice ottimizzato.
/Zp[n] Comprime i membri della struttura.
/Zs Controlla solo la sintassi.
/ZW Produce un file di output da eseguire in Windows Runtime.

Collegamento

Opzione Scopo
/F Imposta la dimensione dello stack.
/LD Crea una libreria a collegamento dinamico.
/LDd Crea una libreria a collegamento dinamico di debug.
/link Passa l'opzione specificata a LINK.
/LN Crea un oggetto MSIL .netmodule.
/MD Compila per creare una DLL multithreading usando MSVCRT.lib.
/MDd Compila per creare una DLL multithreading di debug usando MSVCRTD.lib.
/MT Compila per creare un file eseguibile multithreading usando LIBCMT.lib.
/MTd Compila per creare un file eseguibile multithreading di debug usando LIBCMTD.lib.

Varie

Opzione Scopo
/? Elenca le opzioni del compilatore.
@ Specifica un file di risposta.
/analyze Attiva l'analisi del codice
/bigobj Aumenta il numero di sezioni indirizzabili in un file con estensione obj.
/c Effettua la compilazione senza collegamento.
/cgthreads Specifica il numero di thread cl.exe da usare per l'ottimizzazione e la generazione del codice.
/errorReport Deprecato. le impostazioni di Segnalazione errori Windows (WER) controllano la segnalazione degli errori.
/execution-charset Impostare il set di caratteri di esecuzione.
/fastfail Abilitare la modalità di errore rapido.
/FC Visualizza il percorso completo dei file di codice sorgente passati a cl.exe nel testo di diagnostica.
/FS Forza le scritture nel file PDB da serializzare tramite MSPDBSRV.EXE.
/H Deprecato. Limita la lunghezza dei nomi esterni (pubblici).
/HELP Elenca le opzioni del compilatore.
/J Modifica il tipo char predefinito.
/JMC Supporta il debug nativo di C++ Just My Code.
/kernel Il compilatore e il linker creano un file binario che può essere eseguito nel kernel di Windows.
/MP Compila contemporaneamente più file di origine.
/nologo Evita la visualizzazione dell'intestazione di iscrizione.
/presetPadding Inizializzare zero spaziatura interna per i tipi di classe basati su stack.
/showIncludes Visualizza un elenco di tutti i file di inclusione durante la compilazione.
/source-charset Impostare il set di caratteri di origine.
/Tc Specifica un file di origine C.
/TC Specifica che tutti i file di origine sono C.
/Tp Specifica un file di origine C++.
/TP Specifica che tutti i file di origine sono C++.
/utf-8 Impostare set di caratteri di origine ed esecuzione su UTF-8.
/V Deprecato. Imposta la stringa di versione.
/validate-charset Convalidare i file UTF-8 solo per i caratteri compatibili.
/volatileMetadata Generare metadati per gli accessi alla memoria volatile.
/Yc Creare un .PCH file.
/Yd Deprecato. Inserisce informazioni di debug complete in tutti i file oggetto. Utilizzare invece /Zi.
/Yl Inserisce un riferimento PCH durante la creazione di una libreria di debug.
/Yu Usa un file di intestazione precompilato durante la compilazione.
/Y- Ignora tutte le altre opzioni del compilatore dell'intestazione precompilata nella generazione corrente.
/Zm Specifica il limite di allocazione di memoria delle intestazioni precompilate.

Diagnostica

Opzione Scopo
/diagnostics:caret[-] Formato di diagnostica: stampa la colonna e la riga di origine indicata.
/diagnostics:classic Usare il formato di diagnostica legacy.
/diagnostics Formato di diagnostica: stampa le informazioni sulle colonne.
/external:anglebrackets Considera tutte le intestazioni incluse tramite <> come esterno.
/external:env:<var> Specificare una variabile di ambiente con percorsi di intestazioni esterne.
/external:I <path> Specificare il percorso delle intestazioni esterne.
/external:templates[-] Valutare il livello di avviso nella catena di creazione di istanze del modello.
/external:W<n> Impostare il livello di avviso per le intestazioni esterne.
/options:strict Le opzioni del compilatore non riconosciute sono errori.
/sdl Abilitare altre funzionalità e avvisi di sicurezza.
/w Disabilitare tutti gli avvisi.
/W0, /W1, /W2, /W3/W4 Impostare il livello di avviso di output.
/w1<n>, /w2<n>, /w3<n>/w4<n> Impostare il livello di avviso per l'avviso specificato.
/Wall Abilitare tutti gli avvisi, inclusi gli avvisi disabilitati per impostazione predefinita.
/wd<n> Disabilitare l'avviso specificato.
/we<n> Considerare l'avviso specificato come errore.
/WL Abilitare la diagnostica una riga per i messaggi di errore e di avviso durante la compilazione del codice sorgente C++ dalla riga di comando.
/wo<n> Visualizzare l'avviso specificato una sola volta.
/Wv:xx[.yy[.zzzzz]] Disabilitare gli avvisi introdotti dopo la versione specificata del compilatore.
/WX Considerare gli avvisi come errori.

Opzioni sperimentali

Le opzioni sperimentali possono essere supportate solo da determinate versioni del compilatore. Possono anche comportarsi in modo diverso in versioni del compilatore diverse. Spesso la documentazione migliore, o solo, per le opzioni sperimentali è disponibile nel blog del team di Microsoft C++.

Opzione Scopo
/experimental:log Abilita l'output SARIF strutturato sperimentale.
/experimental:module Abilita il supporto sperimentale dei moduli.

Opzioni del compilatore deprecate e rimosse

Opzione Scopo
/clr:noAssembly Deprecato. In alternativa, usare /LN (Crea modulo MSIL).
/errorReport Deprecato. La segnalazione errori è controllata dalle impostazioni di Segnalazione errori Windows (WER).
/experimental:preprocessor Deprecato. Abilita il supporto sperimentale del preprocessore conforme. Utilizzare /Zc:preprocessor
/Fr Deprecato. Crea un file informazioni di visualizzazione senza variabili locali.
/Ge Deprecato. Attiva le ricerche dello stack. Attivazione per impostazione predefinita.
/Gm Deprecato. Attiva una ricompilazione minima.
/GX Deprecato. Attiva la gestione sincrona delle eccezioni. Utilizzare invece /EH.
/GZ Deprecato. Abilita controlli veloci. Utilizzare invece /RTC1.
/H Deprecato. Limita la lunghezza dei nomi esterni (pubblici).
/Og Deprecato. Usa le ottimizzazioni globali.
/QIfist Deprecato. Usato in passato per specificare come eseguire la conversione da un tipo a virgola mobile a un tipo integrale.
/V Deprecato. Imposta la stringa di versione del .obj file.
/Wp64 Obsoleta. Rileva i problemi di portabilità a 64 bit.
/Yd Deprecato. Inserisce informazioni di debug complete in tutti i file oggetto. Utilizzare invece /Zi.
/Zc:forScope- Deprecato. Disattiva la conformità nell'ambito di un ciclo For.
/Ze Deprecato. Abilita le estensioni del linguaggio .
/Zg Rimosso in Visual Studio 2015. Genera prototipi di funzione.

Vedi anche

Riferimenti alla compilazione in C/C++
Opzioni del compilatore MSVC
Sintassi della riga di comando del compilatore MSVC