Megosztás:


warning pragma

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