Pagine delle proprietà C/C++

Le seguenti pagine delle proprietà si trovano sotto Progetto>Proprietà>Proprietà di configurazione>C/C++:

Proprietà generali C/C++

Percorsi di inclusione aggiuntivi

Specifica una o più directory da aggiungere al percorso di inclusione. Separare le directory con punti e virgola (;) se sono presenti più directory. Imposta l'opzione del /I compilatore (Directory di inclusione aggiuntive).

Directory aggiuntive #using

Specifica una o più directory in cui eseguire la ricerca per risolvere i nomi passati a una #using direttiva. Separare le directory con punti e virgola (;) se si aggiungono più directory. Imposta l'opzione del /AI compilatore.

Cartelle BMI aggiuntive

Specifica una o più directory in cui eseguire la ricerca per risolvere i nomi passati a una import direttiva. Separare le directory con punti e virgola (;) se si aggiungono più directory. Imposta l'opzione del /ifcSearchDir[path] compilatore.

Dipendenze aggiuntive del modulo

Specifica uno o più moduli da usare per risolvere i nomi passati a una direttiva import. Separare le directory con punti e virgola (;) se si aggiungono più directory. Imposta l'opzione del /reference compilatore.

Dipendenze aggiuntive dell'unità di intestazione

Specifica una o più unità di intestazione da utilizzare per risolvere i nomi passati a una import direttiva di intestazione. Separare le directory con punti e virgola (;) se si aggiungono più directory. Imposta l'opzione del /headerUnit compilatore.

Analizzare le sorgenti per le dipendenze dei moduli

Quando questa proprietà è impostata su , il compilatore analizza tutti i file sorgente C++, non solo i file sorgente dell'interfaccia di modulo e delle unità di intestazione, alla ricerca delle dipendenze di moduli e unità di intestazione. Il sistema di compilazione compila il grafico delle dipendenze completo, che garantisce che tutti i moduli importati e le unità di intestazione vengano compilati prima di compilare i file che dipendono da essi. Quando Analizza le origini per le dipendenze del modulo e Converti gli include in importazioni sono entrambe impostate su , qualsiasi file header specificato in un file header-units.json nella stessa directory del file header viene compilato come unità header.

I file con estensione .ixx, e i file in cui la proprietà Proprietà file>C/C++>Avanzate>Compila come è impostata su Compila come unità header C++ (/exportHeader), vengono sempre analizzati.

I file con estensione .ixx e i file con le relative proprietà del file>C/C++> impostate su Compile AsCompile as C++ Header Unit (/exportHeader) vengono sempre analizzati.

Traduci "Include" da "Imports"

Quando questa proprietà è impostata su , il compilatore considera una #include direttiva come import direttiva se vengono soddisfatte determinate condizioni: il file di intestazione viene specificato in un header-units.json file nella stessa directory e un'unità di intestazione compilata (un .ifc file) è disponibile per il file di intestazione. In caso contrario, il file di intestazione viene considerato come normale #include. Il header-units.json file viene usato per creare unità di intestazione per ognuna #include senza duplicazione dei simboli. Quando Translate Includes to Imports e Scan Sources for Module Dependencies sono entrambi impostati su , il compilatore individua automaticamente tutti i file header che possono essere compilati in unità header. Questa proprietà imposta l'opzione del /translateInclude compilatore.

Formato delle informazioni di debug

Specifica il tipo di informazioni di debug generate dal compilatore. Questa proprietà richiede impostazioni del linker compatibili. Imposta le opzioni del compilatore /Z7, /Zi, /ZI (formato delle informazioni di debug).

Scelte

  • Nessuno (None): non produce informazioni di debug, quindi la compilazione potrebbe essere più veloce.
  • Compatibile con C7 (OldStyle): produce file oggetto contenenti informazioni di debug simbolico complete. Non viene prodotto alcun file PDB.
  • Database di programma (ProgramDatabase) : produce un database di programma (PDB) che contiene informazioni sul tipo e informazioni di debug simbolico da usare con il debugger. Le informazioni di debug simbolico includono i nomi e i tipi di variabili e funzioni e i numeri di riga.
  • Database del programma per Edit And Continue (EditAndContinue) - produce un database del programma, come descritto in precedenza, in un formato che supporta la funzionalità Edit And Continue.

Supportare solo il debug del codice

Aggiunge il codice di supporto per l'abilitazione del debug Just My Code in questa unità di compilazione. Imposta /JMC.

Supportare il debug dinamico C++

(Anteprima) Imposta il flag /dynamicdeopt del compilatore per attivare il debug dinamico C++. Posizionare punti di interruzione deoptimizzati e passare ovunque con la deoptimizzazione della funzione su richiesta. Usare questa modalità per il debug di codice ottimizzato.

Supporto RunTime di Common Language

Usare il servizio runtime .NET. Questa opzione non è compatibile con altre opzioni. Per ulteriori dettagli, consultare la documentazione sulla famiglia di switch /clr.

Scelte

  • Nessun supporto per Common Language Runtime - Nessun supporto per Common Language Runtime.
  • Supporto per il Common Language Runtime - crea metadati per l'applicazione che possono essere consumati da altre applicazioni CLR. Consente inoltre all'applicazione di utilizzare tipi e dati nei metadati di altri componenti CLR.
  • Puro supporto RunTime di Common Language MSIL: produce un file di output solo MSIL senza codice eseguibile nativo, anche se può contenere tipi nativi compilati in MSIL.
  • Supporto Common Language Runtime MSIL sicuro: produce solo MSIL (nessun codice eseguibile nativo) e un file di output verificabile.

Uso dell'estensione di Windows Runtime

Utilizzare le estensioni del linguaggio Windows Runtime. Imposta /ZW.

Sopprimere il banner di avvio

Sopprime la visualizzazione del banner di login all'avvio del compilatore e la visualizzazione dei messaggi informativi durante la compilazione.

Livello di allerta

Specifica il grado di severità del controllo effettuato dal compilatore per trovare gli errori del codice. Imposta /W0 - /W4.

Scelte

  • Disattiva tutti gli avvisi: il livello 0 disabilita tutti gli avvisi.
  • Level1 : il livello 1 visualizza avvisi gravi. Il livello 1 è il livello di avviso predefinito nella riga di comando.
  • Level2 : il livello 2 visualizza tutti gli avvisi di livello 1 e gli avvisi meno gravi del livello 1.
  • Level3 : il livello 3 visualizza tutti gli avvisi di livello 2 e tutti gli altri avvisi consigliati per scopi di produzione.
  • Livello 4 : il livello 4 visualizza tutti gli avvisi di livello 3 e gli avvisi informativi, che nella maggior parte dei casi possono essere ignorati in modo sicuro.
  • EnableAllWarnings : abilita tutti gli avvisi, inclusi quelli disabilitati per impostazione predefinita.

Considera gli avvisi come errori

Considera gli avvisi del compilatore come errori. Per un nuovo progetto, potrebbe essere preferibile usare /WX in ogni compilazione. Risolvere tutti gli avvisi per ridurre al minimo i difetti del codice difficili da trovare.

Versione di avviso

Nascondere gli avvisi introdotti dopo una versione specifica del compilatore. Imposta /Wv:xx[.yy[.zzzzz]].

Formato diagnostico

Abilita una diagnostica dettagliata, inclusi informazioni sulle colonne e il contesto di origine nei messaggi diagnostici.

Scelte

  • Caret - Fornisce informazioni sulla colonna nel messaggio diagnostico. Mostra anche la riga corrispondente del codice sorgente con un accento circonflesso (^) che indica la colonna in cui si trova l'errore.
  • Informazioni sulla colonna: fornisce inoltre il numero di colonna all'interno della riga in cui viene eseguita la diagnostica, se applicabile.
  • Classico : restituisce solo i messaggi diagnostici precedenti e concisi con il numero di riga.

Controlli SDL

Controlli aggiuntivi consigliati per il ciclo di vita per lo sviluppo sicuro (SDL). Include l'abilitazione di funzionalità di generazione di codice sicure aggiuntive e abilita avvisi aggiuntivi rilevanti per la sicurezza come errori. Imposta /sdl, /sdl-.

Compilazione a più processori

Abilitare la compilazione multiprocessore. Imposta l'opzione del /MP compilatore.

Abilitare Address Sanitizer

Compila e collega il programma con la strumentazione AddressSanitizer. Questa proprietà supporta attualmente le build di destinazione x86 e x64. Imposta l'opzione del /fsanitize compilatore.

Abilitare il supporto fuzzer (sperimentale)

Compila i programmi con Fuzzer. Abilitare AddressSanitizer per ottenere risultati ottimali. Attualmente disponibile per le build x86 e x64. Imposta /fsanitize=fuzzer.

Proprietà di ottimizzazione C/C++

Ottimizzazione

Selezionare un'opzione per l'ottimizzazione del codice. Selezionare Personalizzato per usare opzioni di ottimizzazione specifiche. Imposta /Od, /O1, /O2.

Scelte

  • Personalizzato - Ottimizzazione personalizzata.
  • Disabilitato: disabilita l'ottimizzazione.
  • Ottimizzazione massima (favor size) - Equivalente a /Os /Oy /Ob2 /Gs /GF /Gy.
  • Ottimizzazione massima (favorisce la velocità) - Equivalente a /Oi /Ot /Oy /Ob2 /Gs /GF /Gy.
  • Ottimizzazioni (Preferisci velocità) - Equivalente a /Oi /Ot /Oy /Ob2.

Espansione della funzione "inline"

Selezionare il livello di espansione della funzione inlinea per la compilazione. Imposta /Ob.

Scelte

  • Predefinita
  • Disabilitato : disabilita l'espansione inline, attiva per impostazione predefinita.
  • Solo __inline : espande solo le funzioni contrassegnate come inline, __forceinlineo __inline. In alternativa, in una funzione membro C++, definita all'interno di una dichiarazione di classe.
  • Qualsiasi funzione adatta : espande le funzioni contrassegnate come inline o __inline e qualsiasi altra funzione scelta dal compilatore. L'espansione si verifica a discrezione del compilatore. Questa espansione selezionata dal compilatore viene spesso definita inlining automatico.

Abilitare funzioni intrinseche

Abilita le funzioni intrinseche. L'uso di funzioni intrinseche genera codice più veloce ma possibilmente più grande. Imposta /Oi.

Favorisce dimensioni o velocità

Indica se favorire la dimensione del codice o la velocità del codice. Global Optimization deve essere attivato. Imposta /Ot, /Os.

Scelte

  • Prediligi codice di piccole dimensioni : riduce al minimo le dimensioni di EXEs e DLL indicando al compilatore di favorire le dimensioni rispetto alla velocità.
  • Prediligi il codice rapido: ottimizza la velocità di EXEs e DLL indicando al compilatore di favorire la velocità rispetto alle dimensioni. Questo valore è l'impostazione predefinita quando sono abilitate le ottimizzazioni.
  • Nessuno dei due : nessuna dimensione e ottimizzazione della velocità.

Omettere puntatori di frame

Disabilita la creazione di puntatori ai frame nello stack di chiamate.

Abilitare ottimizzazioni sicure per la fibra

Consente ottimizzazioni sicure per le fibre per le applicazioni che utilizzano fibre per accedere all'archiviazione locale del thread. Imposta /GT.

Ottimizzazione dell'intero programma

Abilita le ottimizzazioni tra moduli posticipando la generazione del codice fino al momento del collegamento. Richiede l'opzione linker Link Time Code Generation( Generazione del codice tempo di collegamento). Imposta /GL.

Proprietà del preprocessore C/C++

Definizioni del preprocessore

Definisce i simboli di pre-elaborazione per il file origine.

Rimuovi definizioni per il preprocessore

Specifica uno o più annullamenti di definizioni del preprocessore. Imposta /U.

Rimuovi tutte le definizioni per il preprocessore

Rimuove tutti i valori precedentemente definiti per il preprocessore. Imposta /u.

Ignora percorsi di inclusione standard

Impedisce al compilatore di cercare i file di inclusione nelle directory specificate nelle variabili di ambiente INCLUDE.

Pre-elaborazione in un file

Pre-elabora i file di origine C e C++ e scrive l'output pre-elaborato in un file. Questa opzione elimina la compilazione e non produce un .obj file.

Pre-elaborazione Elimina numeri di riga

Pre-elaborazione senza direttive #line.

Mantieni commenti

Abilitare questa opzione per mantenere i commenti di origine C e C++ (// e /* ... */) nei .i file e in altri output del preprocessore. Il preprocessore rimuove i commenti per impostazione predefinita.

Richiede l'impostazione di almeno una delle opzioni di pre-elaborazione . Imposta /C.

Usare il preprocessore conforme allo standard

Usare un preprocessore conforme allo standard (/Zc:preprocessor). Attualmente implicite in /std:c11 e versioni successive. Per usare il preprocessore legacy, impostare questa proprietà su No.

Proprietà di generazione del codice C/C++

Abilitare il pool di stringhe

Attivare questa proprietà per usare il pool di stringhe, che combina stringhe identiche in un'unica copia di sola lettura nel programma compilato. Ciò può comportare programmi più piccoli. /O1, /O2e /ZI imposta automaticamente l'opzione /GF .

Abilitare la ricompilazione minima

Abilita la ricompilazione minima, che determina se ricompilare i file di origine C++ che includono file di intestazione (h) contenenti definizioni di classe C++ modificate.

Abilita eccezioni C++

Specifica il modello di gestione delle eccezioni che deve essere usato dal compilatore.

Scelte

  • Sì con eccezioni SEH: modello di gestione delle eccezioni che rileva le eccezioni asincrone (strutturate) e sincrone (C++). Imposta /EHa.
  • : modello di gestione delle eccezioni che rileva solo le eccezioni C++ e configura il compilatore per presupporre che extern "C" le funzioni non generino mai un'eccezione C++. Imposta /EHsc.
  • Sì con funzioni C extern : il modello di gestione delle eccezioni che rileva solo le eccezioni C++ e configura il compilatore per presupporre che extern "C" le funzioni generino un'eccezione. Imposta /EHs.
  • No: nessuna gestione delle eccezioni.

Controllo dei tipi più piccoli

Abilita il controllo della conversione in tipi più piccoli. Incompatibile con qualsiasi tipo di ottimizzazione diverso da debug. Imposta /RTCc.

Controlli di runtime di base

Abilita i controlli degli errori di runtime di base. Incompatibile con qualsiasi tipo di ottimizzazione diverso da debug. Imposta /RTCs, /RTCu, /RTC1.

Scelte

  • Stack Frame : abilita il controllo degli errori di runtime dello stack frame.
  • Variabili non inizializzate: segnala quando viene usata una variabile senza essere stata inizializzata.
  • Entrambi (/RTC1, equiv. a /RTCsu) - Equivalente di /RTCsu.
  • Impostazione predefinita : controlli di runtime predefiniti.

Libreria di runtime

Specifica una libreria di runtime per il collegamento. Imposta /MT, /MTd, /MD, /MDd.

Scelte

  • Multithreading : fa sì che l'applicazione usi la versione statica multithreading della libreria di runtime.
  • Debug multithread: definisce _DEBUG e _MT. Questa opzione fa in modo che il compilatore inserisca il nome della libreria LIBCMTD.lib nel .obj file in modo che il linker usi LIBCMTD.lib per risolvere i simboli esterni.
  • DLL multithread - Fa sì che l'applicazione utilizzi la versione multithread della libreria di runtime specifica per DLL. Definisce _MT e _DLL fa in modo che il compilatore inserisca il nome della libreria MSVCRT.lib nel .obj file.
  • DLL di debug multithread - Definisce _DEBUG, _MT e _DLL e fa usare all'applicazione la versione di debug multithread della libreria di runtime specifica per DLL. Fa inoltre in modo che il compilatore inserisca il nome della libreria MSVCRTD.lib nel .obj file.

Allineamento membri Struct

Specifica limiti di allineamento di 1, 2, 4, 8 o 16 byte per i membri di una struct. Imposta /Zp.

Scelte

  • 1 Byte - Comprime le strutture su confini di un byte Uguale a /Zp.
  • 2 Byte : crea pacchetti di strutture su limiti a due byte.
  • 4 byte: allinea le strutture su confini di quattro byte.
  • 8 byte - Allinea le strutture su limiti di otto byte (impostazione predefinita).
  • 16 byte : crea pacchetti di strutture su limiti di sedici byte.
  • Impostazione predefinita : impostazioni di allineamento predefinite.

Specifica i limiti di 1, 2, 4 o 8 byte per l'allineamento dei membri dello struct. Imposta /Zp.

Scelte

  • 1 Byte - Comprime le strutture su confini di un byte Uguale a /Zp.
  • 2 Byte : crea pacchetti di strutture su limiti a due byte.
  • 4 byte: allinea le strutture su confini di quattro byte.
  • 8 byte - Allinea le strutture su limiti di otto byte (impostazione predefinita).
  • Impostazione predefinita : impostazioni di allineamento predefinite.

Controllo di sicurezza

Consente di rilevare i sovraccarichi del buffer dello stack, che gli utenti malintenzionati possono sfruttare per compromettere l'applicazione.

Scelte

  • Disabilitare il controllo di sicurezza : imposta /GS-.
  • Abilitare il controllo di sicurezza : imposta /GS.

Protezione del flusso di controllo

Consente di rilevare i tentativi di eseguire il dispatch verso blocchi di codice non autorizzati.

Scelte

  • : abilitare Control Flow Guard. Imposta /guard:cf.
  • No

Abilita collegamento a livello di funzione

Consente al compilatore di assemblare le singole funzioni sotto forma di funzioni incluse nel pacchetto (COMDAT). Impostazione necessaria per le operazioni di modifica e continuazione. Imposta /Gy.

Abilitare la generazione di codice parallelo

Consente al compilatore di generare codice parallelo per i cicli identificati usando #pragma loop(hint_parallel[(n)]) quando l'ottimizzazione è abilitata.

Abilitare il set di istruzioni avanzato

Abilitare l'uso delle istruzioni disponibili nei processori che supportano set di istruzioni avanzati. Ad esempio, i miglioramenti SSE, SSE2, AVX e AVX2 per IA-32 e i miglioramenti avX e AVX2 a x64. /arch:SSE è disponibile solo per le build x86. /arch:SSE2 è disponibile per le build x86 e x64 ed è l'impostazione predefinita per entrambe le architetture. L'uso di istruzioni avanzate può essere disabilitato con /arch:IA32. Per altre informazioni, vedere/arch (x86), /arch (x64), /arch (ARM64)e /arch (ARM).

Scelte

  • Streaming SIMD Extensions (X86) - Abilita le estensioni SIMD di streaming. Imposta /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Abilita Streaming SIMD Extensions 2. Imposta /arch:SSE2.
  • Estensioni vettoriali avanzate (X86/X64): abilita le estensioni vettoriali avanzate. Imposta /arch:AVX.
  • Advanced Vector Extensions 2 (X86/X64) - Abilita le estensioni vettoriali avanzate 2. Imposta /arch:AVX2.
  • Advanced Vector Extensions 512 (X86/X64) - Abilita le estensioni vettoriali avanzate 512. Imposta /arch:AVX512.
  • Advanced Vector Extensions AVX10.1 (X86/X64) - Abilita le estensioni vettoriali avanzate 10 versione 1. Imposta /arch:AVX10.1.
  • Advanced Vector Extensions AVX10.2 (X86/X64) - Abilita le estensioni vettoriali avanzate 10 versione 2. Imposta /arch:AVX10.2.
  • Estensioni di virtualizzazione (ARM). Abilita le estensioni di virtualizzazione arm. Imposta /arch:ARMv7VE.
  • Istruzioni ARM VFPv4 (ARM). Abilita le istruzioni ARM VFPv4. Imposta /arch:VFPv4.
  • Requisiti dell'estensione DELLA CPU ARMv8.0-A (ARM64). Abilita i requisiti ARMv8.0-A. Imposta /arch:arm8.0.
  • Requisiti dell'estensione CPU ARMv8.1-A (ARM64). Abilita i requisiti ARMv8.1-A. Imposta /arch:arm8.1.
  • Requisiti dell'estensione DELLA CPU ARMv8.2-A (ARM64). Abilita i requisiti ARMv8.2-A. Imposta /arch:arm8.2.
  • Requisiti dell'estensione DELLA CPU ARMv8.3-A (ARM64). Abilita i requisiti ARMv8.3-A. Imposta /arch:arm8.3.
  • Requisiti dell'estensione DELLA CPU ARMv8.4-A (ARM64). Abilita i requisiti ARMv8.4-A. Imposta /arch:arm8.4.
  • Requisiti dell'estensione DELLA CPU ARMv8.5-A (ARM64). Abilita i requisiti ARMv8.5-A. Imposta /arch:arm8.5.
  • Requisiti dell'estensione della CPU ARMv8.6-A (ARM64). Abilita i requisiti ARMv8.6-A. Imposta /arch:arm8.6.
  • Requisiti dell'estensione DELLA CPU ARMv8.7-A (ARM64). Abilita i requisiti ARMv8.7-A. Imposta /arch:arm8.7.
  • Requisiti dell'estensione DELLA CPU ARMv8.8-A (ARM64). Abilita i requisiti ARMv8.8-A. Imposta /arch:arm8.8.
  • Nessuna istruzione avanzata : disabilita le istruzioni avanzate per le compilazioni x86. Imposta /arch:IA32.
  • Non impostato : non imposta in modo esplicito un'opzione /arch .

Abilitare l'uso delle istruzioni disponibili nei processori che supportano set di istruzioni avanzati. Ad esempio, i miglioramenti SSE, SSE2, AVX e AVX2 per IA-32 e i miglioramenti avX e AVX2 a x64. Attualmente /arch:SSE e /arch:SSE2 sono disponibili solo quando si compila per l'architettura x86. Se non viene specificata alcuna opzione, il compilatore usa le istruzioni disponibili nei processori che supportano SSE2. L'uso di istruzioni avanzate può essere disabilitato con /arch:IA32. Per altre informazioni, vedere/arch (x86), /arch (x64), /arch (ARM64)e /arch (ARM).

Scelte

  • Streaming SIMD Extensions (X86) - Abilita le estensioni SIMD di streaming. Imposta /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Abilita Streaming SIMD Extensions 2. Imposta /arch:SSE2.
  • Estensioni vettoriali avanzate (X86/X64): abilita le estensioni vettoriali avanzate. Imposta /arch:AVX.
  • Advanced Vector Extensions 2 (X86/X64) - Abilita le estensioni vettoriali avanzate 2. Imposta /arch:AVX2.
  • Advanced Vector Extensions 512 (X86/X64) - Abilita le estensioni vettoriali avanzate 512. Imposta /arch:AVX512.
  • Advanced Vector Extensions AVX10.1 (X86/X64) - Abilita le estensioni vettoriali avanzate 10 versione 1. Imposta /arch:AVX10.1.
  • Estensioni di virtualizzazione (ARM). Abilita le estensioni di virtualizzazione arm. Imposta /arch:ARMv7VE.
  • Istruzioni ARM VFPv4 (ARM). Abilita le istruzioni ARM VFPv4. Imposta /arch:VFPv4.
  • Requisiti dell'estensione DELLA CPU ARMv8.0-A (ARM64). Abilita i requisiti ARMv8.0-A. Imposta /arch:arm8.0.
  • Requisiti dell'estensione CPU ARMv8.1-A (ARM64). Abilita i requisiti ARMv8.1-A. Imposta /arch:arm8.1.
  • Requisiti dell'estensione DELLA CPU ARMv8.2-A (ARM64). Abilita i requisiti ARMv8.2-A. Imposta /arch:arm8.2.
  • Requisiti dell'estensione DELLA CPU ARMv8.3-A (ARM64). Abilita i requisiti ARMv8.3-A. Imposta /arch:arm8.3.
  • Requisiti dell'estensione DELLA CPU ARMv8.4-A (ARM64). Abilita i requisiti ARMv8.4-A. Imposta /arch:arm8.4.
  • Requisiti dell'estensione DELLA CPU ARMv8.5-A (ARM64). Abilita i requisiti ARMv8.5-A. Imposta /arch:arm8.5.
  • Requisiti dell'estensione della CPU ARMv8.6-A (ARM64). Abilita i requisiti ARMv8.6-A. Imposta /arch:arm8.6.
  • Requisiti dell'estensione DELLA CPU ARMv8.7-A (ARM64). Abilita i requisiti ARMv8.7-A. Imposta /arch:arm8.7.
  • Requisiti dell'estensione DELLA CPU ARMv8.8-A (ARM64). Abilita i requisiti ARMv8.8-A. Imposta /arch:arm8.8.
  • Nessuna istruzione avanzata : disabilita le istruzioni avanzate per le compilazioni x86. Imposta /arch:IA32.
  • Non impostato : non imposta in modo esplicito un'opzione /arch .

Scelte

  • Estensioni Streaming SIMD - Estensioni Streaming SIMD. Imposta /arch:SSE
  • Streaming SIMD Extensions 2 - Streaming SIMD Extensions 2. Imposta /arch:SSE2
  • Estensioni vettoriali avanzate - Estensioni vettoriali avanzate. Imposta /arch:AVX
  • Estensioni vettoriali avanzate 2 - Estensioni vettoriali avanzate 2. Imposta /arch:AVX2
  • Nessuna istruzione migliorata - nessuna istruzione migliorata. Imposta /arch:IA32
  • Non impostato : non impostato.

Abilita lunghezza vettore

Abilitare la scelta della lunghezza del vettore per i flag /arch:AVX512 e /arch:AVX10.x. I valori consentiti sono 256 e 512 bit (X86/X64).

Modello a virgola mobile

Imposta il modello a virgola mobile. Imposta /fp:precise, /fp:strict, /fp:fast.

Scelte

  • Preciso - Impostazione predefinita. Migliora la coerenza dei test a virgola mobile per verificare l'uguaglianza e la disuguaglianza.
  • Strict - il modello a virgola mobile più rigoroso. /fp:strict fa sì che fp_contract sia spento e che fenv_access sia acceso. /fp:except è implicito e può essere disabilitato specificando in modo esplicito /fp:except-. Se usato con /fp:except-, /fp:strict applica una semantica a virgola mobile rigorosa ma senza rispetto per gli eventi eccezionali.
  • Veloce : crea il codice più veloce nella maggior parte dei casi.

Abilitare le eccezioni a virgola mobile

Modello di eccezione a virgola mobile affidabile. Le eccezioni verranno generate immediatamente dopo l'attivazione. Imposta /fp:except.

Creare un'immagine hotpatchable

Quando l'hotpatching è attivo, il compilatore garantisce che la prima istruzione di ogni funzione sia di due byte, come richiesto per l'hotpatching. Imposta /hotpatch.

Mitigazione Spectre

Misure di mitigazione per Spectre CVE 2017-5753. Imposta /Qspectre.

Scelte

  • Abilitato - Abilita la mitigazione di Spectre per CVE 2017-5753.
  • Tutti i carichi - Abilita la mitigazione di Spectre su tutti i carichi.
  • Tutte le letture del flusso di controllo - Abilita la mitigazione di Spectre sulle letture del flusso di controllo.
  • Disabilitato : non impostato.

Mitigazione Spectre

Misure di mitigazione per Spectre CVE 2017-5753. Imposta /Qspectre.

Scelte

  • Abilitato - Abilita la mitigazione Spectre per la vulnerabilità CVE-2017-5753.
  • Disabilitato : non impostato.

Abilitare la mitigazione Intel JCC Erratum

Mitigazione software per l'impatto sulle prestazioni causato dall'aggiornamento del microcodice Intel JCC erratum. Imposta /QIntel-jcc-erratum.

Abilitare i metadati di continuazione EH

Genera un elenco ordinato di tutte le destinazioni valide di continuazione per la gestione delle eccezioni per un file binario, usato durante il runtime per la convalida RIP. Attualmente disponibile per le build x64. Imposta /guard:ehcont.

Abilitare i ritorni firmati

Abilita i ritorni con firma, che consentono di rilevare e impedire i tentativi di trasferire l'esecuzione a blocchi illegali tramite i ritorni di funzione. Attualmente disponibile per le build ARM64. Imposta /guard:signret.

Proprietà del linguaggio C/C++

Disabilitare le estensioni del linguaggio

Elimina o abilita le estensioni del linguaggio. Imposta /Za.

Considerare WChar_t come tipo predefinito

Quando si abilita questa proprietà, il tipo wchar_t diventa un tipo nativo che viene associato a short nello stesso modo in cui __wchar_t viene associato a __int16. /Zc:wchar_t è attivato per impostazione predefinita.

Forzare la conformità nell'ambito del ciclo For

Implementa il comportamento standard del C++ per le istruzioni di loop for con le estensioni Microsoft. Imposta /Za, /Ze (disabilita le estensioni del linguaggio. /Zc:forScope è attivato per impostazione predefinita.

Rimuovere codice e dati non referenziati

Quando si abilita questa proprietà, il compilatore non genera più informazioni sui simboli per il codice e i dati non referenziati.

Applicare regole di conversione dei tipi

Usato per identificare un tipo di riferimento rvalue come risultato di un'operazione di cast in conformità allo standard C++11.

Abilita informazioni sui tipi in fase di esecuzione

Aggiunge il codice per controllare i tipi di oggetto C++ in fase di esecuzione (informazioni sul tipo di runtime o RTTI). Imposta /GR, /GR-.

Aprire il supporto mp

Abilita le estensioni del linguaggio OpenMP 2.0. Imposta /openmp.

Standard del linguaggio C++

Determina lo standard del linguaggio C++ applicato dal compilatore. Il valore predefinito non imposta un'opzione standard, quindi il compilatore usa l'impostazione predefinita C++14. Se si seleziona un valore specifico, viene impostata l'opzione del compilatore corrispondente /std .

Scelte

  • Impostazione predefinita (ISO C++14 Standard)
  • ISO C++14 Standard (/std:c++14)
  • ISO C++17 Standard (/std:c++17)
  • ISO C++20 Standard (/std:c++20)
  • Anteprima - ISO C++23 Standard (/std:c++23preview)
  • Anteprima- Funzionalità della bozza di lavoro C++ più recente (/std:c++latest)

Standard del linguaggio C

Determina lo standard del linguaggio C applicato dal compilatore. Il valore predefinito non imposta un'opzione standard, quindi il compilatore usa l'impostazione MSVC legacy predefinita. Se si seleziona un valore specifico, viene impostata l'opzione del compilatore corrispondente /std .

Scelte

  • Impostazione predefinita (MSVC legacy)
  • ISO C11 Standard (/std:c11)
  • ISO C17 (2018) Standard (/std:c17)
  • Anteprima - Funzionalità della bozza di lavoro C più recente (/std:clatest)

Modalità di conformità

Abilita o elimina la modalità di conformità. Imposta /permissive-.

Abilitare moduli della libreria standard C++ sperimentale

Supporto sperimentale per i moduli della libreria standard e i moduli TS di C++.

Compilare moduli della libreria standard ISO C++23

A partire da Visual Studio 17.6, quando questa proprietà è abilitata e C++ Language Standard è impostata su /std:c++latest, i progetti Microsoft C++ trovano e compilano automaticamente moduli della libreria standard ISO C++23. In questo modo è possibile o import stdimport std.compat nel codice C++.

Proprietà delle intestazioni precompilate C/C++

Intestazione precompilata

Crea/Usa Intestazione Precompilata

Abilita la creazione o l'uso di un'intestazione precompilata durante la compilazione. Imposta /Yc, /Yu.

Scelte

  • Create : indica al compilatore di creare un file di intestazione precompilato (.pch) che rappresenta lo stato della compilazione in un determinato punto.
  • Use : indica al compilatore di usare un file di intestazione precompilato esistente (.pch) nella compilazione corrente.
  • Not Using Precompiled Headers (Non uso di intestazioni precompilate) - Non usando intestazioni precompilate.

File di intestazione precompilato

Specifica il nome del file di intestazione utilizzato dal compilatore per creare o accedere a un'intestazione precompilata. Imposta /Yc, /Yu.

File di output dell'intestazione precompilato

Specifica il percorso o il nome del file di intestazione precompilato generato. Imposta /Fp.

Proprietà dei file di output C/C++

Espandi fonte attribuita

Crea un file di elenco con attributi espansi inseriti nel file di origine. Imposta /Fx.

Risultato dell'assembler

Specifica il contenuto del file di output del linguaggio di assembly. Imposta /FA, /FAc, /FAs, /FAcs.

Scelte

  • Nessuna inserzione- Nessuna inserzione.
  • Listato solo assembly - Codice assembly: .asm.
  • Assembly con codice macchina - Codice macchina e codice assembly: .cod.
  • Assembly Con Codice Sorgente - Codice sorgente e codice assembly: .asm.
  • Assembly, codice macchina e codice sorgente - Assembly, codice macchina e codice sorgente: .cod.

Usare Unicode per l'elenco dell'assembler

Fa sì che il file di output venga creato in formato UTF-8.

Posizione elenco ASM

Specifica il percorso o il nome relativi per il file di elenco ASM. Può essere un nome di file o directory. Imposta /Fa.

Nome file di output del modulo

Posizione del file BMI di uscita del modulo o dell'unità header. Può essere un nome di file o directory. Imposta /ifcOutput[name].

Nome del file delle dipendenze del modulo

Specifica il percorso e/o il nome del file di dipendenze del modulo generato. Imposta /scanDependencies[path].

Nome file dell'oggetto

Specifica un nome con cui eseguire l'override del nome del file oggetto predefinito. Può essere un nome di file o directory. Imposta /Fo.

Nome del file del database del programma

Specifica un nome per un file PDB generato dal compilatore. Specifica anche il nome di base per il file IDB generato dal compilatore richiesto. Può essere un nome di file o directory. Imposta /Fd.

Generare file di documentazione XML

Specifica che il compilatore deve generare file di commento della documentazione XML (. XDC). Imposta /doc.

Nome file della documentazione XML

Specifica il nome dei file di documentazione XML generati. Può essere un nome di file o directory. Imposta /doc:<il nome>.

Genera file di dipendenze di origine

Genera un file JSON con l'elenco di tutti i file usati dal compilatore per la compilazione dell'origine. Imposta /sourceDependencies.

Nome del file delle dipendenze sorgente

Specifica il percorso e/o il nome del file di dipendenze di origine generato. Imposta /sourceDependencies[path].

Proprietà delle informazioni di esplorazione C/C++

Abilitare informazioni di navigazione

Specifica se il compilatore deve generare un .bsc file. Imposta /FR.

Esplora file di informazioni

Specifica un nome facoltativo per il file di informazioni del browser. Imposta /FR<il nome>.

Proprietà degli include esterni C/C++

Trattare i file inclusi con parentesi angolari come esterni

Specifica se trattare i file inclusi tra parentesi angolari come esterni. Impostare questa proprietà su per impostare l'opzione del /external:anglebrackets compilatore.

Livello di avviso per l'intestazione esterna

Seleziona quanto rigoroso si desidera che il compilatore sia riguardo agli errori di codice nelle intestazioni esterne. Questa proprietà imposta l'opzione del /external:Wn compilatore. Se questo valore è impostato su Eredita livello di avviso del progetto o su quello predefinito, le altre /external opzioni vengono ignorate.

Diagnostica dei template nelle intestazioni esterne

Specifica se valutare il livello di avviso in una catena di istanziazione del modello. Impostare questa proprietà su per impostare l'opzione del /external:templates- compilatore.

Disabilitare l'analisi del codice per gli header esterni

Disabilita l'analisi del codice per le intestazioni esterne. Imposta l'opzione del /analyze:external- compilatore.

Set di regole di analisi per header esterni

Specifica un override del set di regole di analisi del codice per le intestazioni esterne. Se questa proprietà non è specificata, viene utilizzata l'impostazione Code Analysis. Imposta l'opzione del /analyze:external:ruleset path compilatore.

Proprietà avanzate C/C++

Convenzione di chiamata

Selezionare la convenzione di chiamata predefinita per l'applicazione (può essere sottoposta a override dalla funzione). Imposta /Gd, /Gr, /Gz, /Gv.

Scelte

  • __cdecl - Specifica la __cdecl convenzione di chiamata per tutte le funzioni, ad eccezione delle funzioni membro C++ e delle funzioni contrassegnate __stdcall o __fastcall.
  • __fastcall - Specifica la __fastcall convenzione di chiamata per tutte le funzioni, ad eccezione delle funzioni membro C++ e delle funzioni contrassegnate __cdecl o __stdcall. Tutte le funzioni __fastcall devono avere prototipi.
  • __stdcall - Specifica la __stdcall convenzione di chiamata per tutte le funzioni, ad eccezione delle funzioni membro C++ e delle funzioni contrassegnate __cdecl o __fastcall. Tutte le funzioni __stdcall devono avere prototipi.
  • __vectorcall - Specifica la convenzione di chiamata __vectorcall per tutte le funzioni, ad eccezione delle funzioni membro C++ e delle funzioni contrassegnate come __cdecl, __fastcall o __stdcall. Tutte le funzioni __vectorcall devono avere prototipi.

Compila come

Selezionare un'opzione del linguaggio di compilazione per i file di origine. Imposta /TC, /TP, /interface, /internalPartition, o /exportHeader opzioni.

Scelte

  • Predefinita: impostazione predefinita.
  • Compila come codice C (/TC): compila i file di origine specificati come codice C. Per impostazione predefinita, i file con estensione .c vengono compilati come C.
  • Compila come codice C++ (/TP): compila i file di origine specificati come codice C++. Per impostazione predefinita, tutti i file di origine che non hanno un'estensione .c, .ixx.cppm, o .h che non hanno un'estensione vengono compilati come C++.
  • Compila come codice del modulo C++ (/interface): compila i file di origine specificati come codice del modulo C++. Per impostazione predefinita, i file con un'estensione .ixx o .cppm vengono compilati come codice del modulo C++.
  • Compila come partizione interna del modulo C++ (/internalPartition): compila i file di origine specificati come partizione interna del modulo C++.
  • Compila come unità di intestazione C++ (/exportHeader): compila i file di origine specificati come unità di intestazione C++. Per impostazione predefinita, i file con estensione .h o senza estensione vengono compilati come unità header.

Disabilitare avvisi specifici

Disabilitare i numeri di avviso specificati. Inserire i numeri di avviso in un elenco delimitato da punto e virgola. Imposta /wd<il numero>.

File forzato di inclusione

Specifica uno o più file di inclusione obbligatori. Imposta /FI<il nome>.

File #using obbligato

Specifica uno o più file "#using" forzati. Imposta /FU<il nome>.

Mostra inclusioni

Genera un elenco di file di inclusione con l'output del compilatore. Imposta /showIncludes.

Usare percorsi completi

Usare percorsi completi nei messaggi di diagnostica. Imposta /FC.

Omettere il nome predefinito della libreria

Specifica di omettere i nomi di libreria predefiniti nei .obj file. Imposta /Zl.

Segnalazione errori interni del compilatore

Nota

Questa opzione è deprecata. A partire da Windows Vista, la segnalazione degli errori è controllata dalle impostazioni di Segnalazione errori Windows (WER).

Considerare avvisi specifici come errori

Considera l'avviso del compilatore specifico come errore, dove n è un avviso del compilatore.

Opzioni aggiuntive

Opzioni aggiuntive.