Condividi tramite


warning pragma

Consente la modifica selettiva del comportamento dei messaggi di avviso del compilatore.

Sintassi

#pragma warning(
warning-specifier : warning-number-list
 [;warning-specifier:warning-number-list ... ] )
#pragma warning( push [ ,n ] )
#pragma warning( pop )

Osservazioni:

Sono disponibili i seguenti parametri identificatore-avviso.

identificatore-avviso Significato
1, 2, 3, 4 Applicare il livello specificato agli avvisi specificati. Attiva anche un avviso specificato disattivato per impostazione predefinita.
default Reimposta il comportamento dell'avviso sul valore predefinito. Attiva anche un avviso specificato disattivato per impostazione predefinita. L'avviso verrà generato nel suo livello predefinito e documentato.

Per altre informazioni, vedere Avvisi del compilatore disattivati per impostazione predefinita.
disable Non emettere i messaggi di avviso specificati.
error Segnala gli avvisi specificati come errori.
once Visualizza i messaggi specificati solo una volta.
suppress Inserisce lo stato corrente dell'oggetto pragma nello stack, disabilita l'avviso specificato per la riga successiva e quindi apre lo stack di avvisi in modo che lo pragma stato venga reimpostato.

L'istruzione di codice seguente illustra che un warning-number-list parametro può contenere più numeri di avviso e che è possibile specificare più warning-specifier parametri nella stessa pragma direttiva.

#pragma warning( disable : 4507 34; once : 4385; error : 164 )

Questa direttiva è funzionalmente equivalente al codice seguente:

// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )

// Issue warning C4385 only once.
#pragma warning( once : 4385 )

// Report warning C4164 as an error.
#pragma warning( error : 164 )

Il compilatore aggiunge 4000 a qualsiasi numero di avviso compreso tra 0 e 999.

I numeri di avviso nell'intervallo 4700-4999 sono associati alla generazione di codice. Per questi avvisi, lo stato dell'avviso in vigore quando il compilatore raggiunge la definizione della funzione rimane in vigore per il resto della funzione. L'uso warningpragma di nella funzione per modificare lo stato di un numero di avviso maggiore di 4699 diventa effettivo solo dopo la fine della funzione. Nell'esempio seguente viene illustrato il posizionamento corretto di un oggetto warningpragma per disabilitare un messaggio di avviso di generazione del codice e quindi ripristinarlo.

// pragma_warning.cpp
// compile with: /W1
#pragma warning(disable:4700)
void Test() {
   int x;
   int y = x;   // no C4700 here
   #pragma warning(default:4700)   // C4700 enabled after Test ends
}

int main() {
   int x;
   int y = x;   // C4700
}

Si noti che in tutto il corpo di una funzione, l'ultima impostazione di warningpragma sarà effettiva per l'intera funzione.

Push e pop

Supporta warningpragma anche la sintassi seguente, in cui il parametro n facoltativo rappresenta un livello di avviso (da 1 a 4).

#pragma warning( push [ , n ] )

#pragma warning( pop )

Archivia pragmawarning( push ) lo stato di avviso corrente per ogni avviso. Archivia pragmawarning( push, n ) lo stato corrente per ogni avviso e imposta il livello di avviso globale su n.

Viene pragmawarning( pop ) visualizzato l'ultimo stato di avviso inserito nello stack. Tutte le modifiche apportate allo stato di avviso tra push e pop vengono annullate. Si consideri questo esempio:

#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )

Alla fine di questo codice, pop ripristina lo stato di ogni avviso (include 4705, 4706 e 4707) a quello che era all'inizio del codice.

Quando si scrivono file di intestazione, è possibile usare push e pop per garantire che le modifiche dello stato di avviso apportate da un utente non impediscano la compilazione corretta delle intestazioni. Usare push all'inizio dell'intestazione e pop alla fine. Ad esempio, potrebbe essere disponibile un'intestazione che non viene compilata correttamente al livello di avviso 4. Il codice seguente modifica il livello di avviso su 3 e quindi ripristina il livello di avviso originale alla fine dell'intestazione.

#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )

Per altre informazioni sulle opzioni del compilatore che consentono di eliminare gli avvisi, vedere /FI e /w.

Vedi anche

Direttive Pragma e parole __pragma chiave e _Pragma