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 warning
pragma 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 warning
pragma 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 warning
pragma sarà effettiva per l'intera funzione.
Push e pop
Supporta warning
pragma 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
.