Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Lehetővé teszi a fordítói figyelmeztető üzenetek viselkedésének szelektív módosítását.
Szintaxis
#pragma warning(
[ ]
[ ... ]
[ n ]
#pragma warning( pop )
Megjegyzések
A következő figyelmeztetés-megadó paraméterek érhetők el.
| figyelmeztetés-specifikátor | Jelentés |
|---|---|
| , , | Alkalmazza a megadott szintet a megadott figyelmeztetésekre. Például: kikapcsolja az 5033-as figyelmeztetést (általában 1-es szintű figyelmeztetés), kivéve, ha a figyelmeztetési szint 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ó 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ő aktuális állapotát, letiltja a következő sorra vonatkozó figyelmeztetést, majd a figyelmeztető vermet a állapot alaphelyzetbe állításához. |
justification |
Nem kötelező sztring, amely leírja a figyelmeztetés letiltásának vagy letiltásának okát. A 2022-es Visual Studio 17.14-es verziójában jelent meg. |
Az alábbi kódutasítás azt szemlélteti, hogy egy paraméter több figyelmeztetési számot is tartalmazhat, és hogy több paraméter is megadható ugyanabban a irányelvben.
#pragma warning( disable : 4507 4034; once : 4385; error : 164 )
Ha azonban a mező jelen van, csak egy figyelmeztető szám adható meg. Az alábbi kódutasítás a mező használatát szemlélteti.
#pragma warning( disable : 4507, justification : "This warning is disabled" )
A mezőből megtudhatja, hogy miért tilt le vagy tilt le egy figyelmeztetést. A mező csak a és a . Az indoklás a beállítás megadásakor megjelenik a Static Analysis Results Interchange Format (SARIF) kimenetben. Értéke egy UTF-8 kódolású keskeny karakterlánc-konstans. SARIF-fájl létrehozásához használja a fordítót.
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 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 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 utolsó beállítása az egész függvényre érvényes lesz.
Leküldés és felugratás
A 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 minden figyelmeztetéshez tárolja az aktuális figyelmeztetési állapotot. A minden figyelmeztetés aktuális állapotát tárolja, és a globális figyelmeztetési szintet nértékre állítja.
A a verembe leküldött utolsó figyelmeztetési állapotot ugratja ki. Az és a 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 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 és 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 a fejléc elején, és 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 )
Választás a következők között:
Mindkettőt , és finomított vezérlést biztosít a figyelmeztetések mellőzése felett:
-
[[gsl::suppress]]csak a Microsoft C++ Code Analysis által kibocsátott figyelmeztetéseket tiltja le. Használja a C++ alapvető irányelvek ellenőrzéseivel, amelyek alkalmazhatók egy hatókörre vagy egy adott deklarációra. - bármely fordítói figyelmeztetéshez használható. Ez akkor hasznos, ha egy adott kódblokk figyelmeztetését el kell kerülnie anélkül, hogy jelentősen módosítaná a kód szerkezetét.
Amikor csak lehetséges, használja a [[gsl::suppress]] a Microsoft C++ Code Analysis figyelmeztetéseinek letiltására.
A figyelmeztetések mellőzését segítő fordítóbeállításokról a és a című témakörben talál további információt.
Lásd még:
Pragma irányelvei, valamint a és kulcsszavak