Condividi tramite


warning pragma

Abilita 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 parametri warning-specifier seguenti.

warning-specifier Significato
1, 2, 3, 4 Applicare il livello specificato agli avvisi specificati. Attiva anche un avviso specificato disattivato per impostazione predefinita.
default Reimpostare il comportamento di avviso sul valore predefinito. Attiva anche un avviso specificato disattivato per impostazione predefinita. L'avviso verrà generato al livello predefinito, documentato, .

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

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

#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 del warningpragma 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 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 del warningpragma sarà attiva per l'intera funzione.

Push e pop

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

#pragma warning( push [ , n ] )

#pragma warning( pop )

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

Il pragmawarning( pop ) visualizza 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 corretta compilazione 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.

Vedere anche

direttive Pragma e parole chiave __pragma e _Pragma