Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
Lehetővé teszi a fordítói figyelmeztető üzenetek viselkedésének szelektív módosítását.
Szintaxis
#pragma warning(
warning-specifier:warning-number-list[,justification:string-literal]
[;warning-specifier:warning-number-list... ])
#pragma warning( push[,n ])
#pragma warning( pop )
Megjegyzések
A következő figyelmeztetés-megadó paraméterek érhetők el.
| figyelmeztetés-specifikátor | Jelentés |
|---|---|
1, 2, 34 |
Alkalmazza a megadott szintet a megadott figyelmeztetésekre. Például: #pragma warning (3 : 5033) kikapcsolja az 5033-as figyelmeztetést (általában 1-es szintű figyelmeztetés), kivéve, ha a figyelmeztetési szint /w3 vagy magasabb. Használható egy megadott figyelmeztetés bekapcsolására is, amely alapértelmezés szerint ki van kapcsolva. |
default |
A figyelmeztetési viselkedés visszaállítása az alapértelmezett értékre. Emellett bekapcsol egy megadott figyelmeztetést is, amely alapértelmezés szerint ki van kapcsolva. A figyelmeztetés az alapértelmezett, dokumentált, szinten jön létre. További információ: Fordító alapértelmezés szerint ki van kapcsolva. |
disable |
Ne adja ki a megadott figyelmeztető üzeneteket. A választható justification tulajdonság engedélyezett. |
error |
Jelentse a megadott figyelmeztetéseket hibaként. |
once |
A megadott üzenet(ek) megjelenítése csak egyszer. |
suppress |
Leküldi a veremen lévő pragma aktuális állapotát, letiltja a következő sorra vonatkozó figyelmeztetést, majd a figyelmeztető vermet a pragma állapot alaphelyzetbe állításához. A választható justification tulajdonság engedélyezett. |
Az alábbi kódutasítás azt szemlélteti, hogy egy warning-number-list paraméter több figyelmeztetési számot is tartalmazhat, és hogy több warning-specifier paraméter is megadható ugyanabban a pragma irányelvben.
#pragma warning( disable : 4507 4034; once : 4385; error : 164 )
Ha azonban a justification mező jelen van, csak egy figyelmeztető szám adható meg. Az alábbi kódutasítás a mező használatát justification szemlélteti.
#pragma warning( disable : 4507, justification : "This warning is disabled" )
A justification mezők lehetővé teszik, hogy elmagyarázza, miért van letiltva vagy letiltva egy figyelmeztetés. A justification mező csak a disable és a suppresswarning-specifier. Ez az érték jelenik meg a SARIF kimenetben, ha az /analyze:log:includesuppressed opció meg van adva. Értéke egy UTF-8 kódolású keskeny karakterlánc-konstans.
Ez az irányelv funkcionálisan egyenértékű a következő kóddal:
// Disable warning messages 4507 and 4034.
#pragma warning(disable : 4507 4034)
// Issue warning C4385 only once.
#pragma warning(once : 4385)
// Report warning C4164 as an error.
#pragma warning(error : 164)
A fordító 4000-et ad hozzá minden 0 és 999 közötti figyelmeztető számhoz.
A 4700-4999 tartományban lévő figyelmeztető számok kódgenerálással vannak társítva. Ezekben a figyelmeztetésekben a függvénydefiníció elérésekor érvényben lévő figyelmeztetés állapota a függvény többi részében is érvényben marad. A warningpragma a függvényben a 4699-nél nagyobb figyelmeztető szám állapotának módosítására csak a függvény vége után lép érvénybe. Az alábbi példa egy kódgenerálási figyelmeztető üzenet letiltásához és visszaállításához szükséges warningpragma helyes elhelyezését mutatja be.
// 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 compiling Test()
}
int main()
{
int x;
int y = x; // C4700
}
Figyelje meg, hogy a függvény törzsében a warningpragma utolsó beállítása az egész függvényre érvényes lesz.
Leküldés és felugratás
A warningpragma a következő szintaxist is támogatja, ahol az opcionális n paraméter egy figyelmeztetési szintet jelöl (1–4).
#pragma warning( push [ , n ] )
#pragma warning( pop )
A pragmawarning( push ) minden figyelmeztetéshez tárolja az aktuális figyelmeztetési állapotot. A pragmawarning( push, n ) minden figyelmeztetés aktuális állapotát tárolja, és a globális figyelmeztetési szintet nértékre állítja.
A pragmawarning( pop ) a verembe leküldött utolsó figyelmeztetési állapotot ugratja ki. Az push és a pop közötti figyelmeztetési állapotban végrehajtott módosítások visszavonásra kerülnek. Fontolja meg ezt a példát:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
A kód végén pop visszaállítja az összes figyelmeztetés állapotát (beleértve a 4705-öt, a 4706-ot és a 4707-et) a kód elejének állapotára.
Fejlécfájlok írásakor push és pop használatával garantálhatja, hogy a felhasználó által végrehajtott figyelmeztetési állapotváltozások nem akadályozzák a fejlécek helyes összeállítását. Használja push a fejléc elején, és pop a végén. Előfordulhat például, hogy olyan fejléce van, amely nem fordít le tisztán a 4. figyelmeztetési szinten. Az alábbi kód 3-ra módosítja a figyelmeztetési szintet, majd visszaállítja az eredeti figyelmeztetési szintet a fejléc végén.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
A figyelmeztetések mellőzését segítő fordítóbeállításokról a /FI és a /wcímű témakörben talál további információt.
Lásd még:
Pragma irányelvei, valamint a __pragma és _Pragma kulcsszavak