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