Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Umożliwia selektywne modyfikowanie zachowania komunikatów ostrzegawczych kompilatora.
Składnia
#pragma warning(
warning-specifier
:
warning-number-list
,
justification
:
string-literal
[ ]
;
warning-specifier
:
warning-number-list
[ ... ])
#pragma warning( push
,
[ n ])
#pragma warning( pop )
Uwagi
Dostępne są następujące parametry specyfikatora ostrzeżenia.
specyfikator ostrzegawczy | Znaczenie |
---|---|
1 , , 2 , , 3 4 |
Zastosuj dany poziom do określonych ostrzeżeń. Na przykład: #pragma warning (3 : 5033) wyłącza ostrzeżenie 5033 (zwykle ostrzeżenie poziomu 1), chyba że poziom ostrzeżenia jest ustawiony na /w3 lub wyższy. Może być również używany do włączania określonego ostrzeżenia, które jest domyślnie wyłączone. |
default |
Zresetuj zachowanie ostrzegawcze do wartości domyślnej. Włącza również określone ostrzeżenie, które jest domyślnie wyłączone. Ostrzeżenie zostanie wygenerowane na domyślnym poziomie udokumentowany. Aby uzyskać więcej informacji, zobacz Ostrzeżenia kompilatora, które są domyślnie wyłączone. |
disable |
Nie należy wystawiać określonych komunikatów ostrzegawczych. Właściwość opcjonalna justification jest dozwolona. |
error |
Zgłoś określone ostrzeżenia jako błędy. |
once |
Wyświetl tylko jeden raz określone komunikaty. |
suppress |
Wypycha bieżący stan pragma na stosie, wyłącza określone ostrzeżenie dla następnego wiersza, a następnie wyświetla stos ostrzegawczy tak, aby stan pragma został zresetowany. Właściwość opcjonalna justification jest dozwolona. |
Poniższa instrukcja kodu ilustruje, że parametr warning-number-list
może zawierać wiele liczb ostrzegawczych, a wiele parametrów warning-specifier
można określić w tej samej dyrektywie pragma.
#pragma warning( disable : 4507 4034; once : 4385; error : 164 )
Jeśli jednak pole justification
jest obecne, można określić tylko jeden numer ostrzeżenia. Poniższa instrukcja kodu ilustruje użycie justification
pola.
#pragma warning( disable : 4507, justification : "This warning is disabled" )
Pola justification
umożliwiają wyjaśnienie, dlaczego ostrzeżenie jest wyłączane lub pomijane. To justification
pole jest obsługiwane tylko w przypadku i suppress
disable
warning-specifier
. Ta wartość pojawi się w danych wyjściowych SARIF po określeniu /analyze:log:includesuppressed
opcji. Jego wartość to wąski literał ciągu zakodowany w UTF-8.
Ta dyrektywa jest funkcjonalnie równoważna następującemu kodzie:
// 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)
Kompilator dodaje 4000 do dowolnej liczby ostrzeżeń z zakresu od 0 do 999.
Numery ostrzegawcze w zakresie 4700–4999 są skojarzone z generowaniem kodu. W przypadku tych ostrzeżeń stan ostrzeżenia, gdy kompilator osiągnie definicję funkcji, pozostaje w mocy dla pozostałej części funkcji. Użyj warning
pragma w funkcji, aby zmienić stan ostrzeżenia o numerze większym niż 4699 dopiero po zakończeniu funkcji. W poniższym przykładzie pokazano prawidłowe rozmieszczenie warning
pragma, aby wyłączyć komunikat ostrzegawczy generowania kodu, a następnie przywrócić go.
// 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
}
Zwróć uwagę, że w całej treści funkcji ostatnie ustawienie warning
pragma będzie obowiązywać dla całej funkcji.
Wypychanie i wyskakujące okienko
warning
pragma obsługuje również następującą składnię, gdzie opcjonalny parametr n reprezentuje poziom ostrzeżenia (od 1 do 4).
#pragma warning( push [ , n ] )
#pragma warning( pop )
pragma
warning( push )
przechowuje bieżący stan ostrzeżenia dla każdego ostrzeżenia.
pragma
warning( push, n )
przechowuje bieżący stan dla każdego ostrzeżenia i ustawia globalny poziom ostrzeżenia na n.
pragma
warning( pop )
wyskakuje ostatni stan ostrzeżenia wypchnięty na stos. Wszelkie zmiany wprowadzone w stanie ostrzeżenia między push
a pop
zostaną cofnięte. Rozważmy następujący przykład:
#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop )
Na końcu tego kodu pop
przywraca stan każdego ostrzeżenia (w tym 4705, 4706 i 4707) do tego, co było na początku kodu.
Podczas pisania plików nagłówkowych można użyć push
i pop
, aby zagwarantować, że zmiany stanu ostrzeżenia wprowadzone przez użytkownika nie uniemożliwiają poprawnego kompilowania nagłówków. Użyj push
na początku nagłówka i pop
na końcu. Na przykład może istnieć nagłówek, który nie jest kompilowany w sposób czysty na poziomie ostrzeżenia 4. Poniższy kod zmienia poziom ostrzeżenia na 3, a następnie przywraca oryginalny poziom ostrzeżenia na końcu nagłówka.
#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop )
Aby uzyskać więcej informacji na temat opcji kompilatora, które ułatwiają pomijanie ostrzeżeń, zobacz /FI
i /w
.