共用方式為


warning

啟用選擇性修改編譯器的警告訊息的行為。

#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...] )
#pragma warning( push[ ,n ] )
#pragma warning( pop )

備註

下列的警告規範參數都可以使用。

警告規範

意義

1, 2, 3, 4

將指定層級套用至指定的警告。這也會開啟一個指定的警告訊息,預設為關閉。

default

重設警告的行為,為其預設值。這也會開啟一個指定的警告訊息,預設為關閉。這項警告會產生的預設值、 文件層級上。

如需詳細資訊,請參閱依預設是關閉的編譯器警告

disable

時,不會發出指定的警告訊息。

error

報告特定的警告視為錯誤。

once

顯示指定的郵件一次。

suppress

推入堆疊上的目前狀態的 pragma,停用指定的警告下, 一行,並再取出警告堆疊以便 pragma 狀態已重設。

下列程式碼陳述式展示了warning-number-list參數可以包含多個警告編號,以及多個warning-specifier參數可以指定相同的 pragma 指示詞中。

#pragma warning( disable : 4507 34; once : 4385; error : 164 )

這是功能上相當於下列程式碼。

// Disable warning messages 4507 and 4034.
#pragma warning( disable : 4507 34 )

// Issue warning 4385 only once.
#pragma warning( once : 4385 )

// Report warning 4164 as an error.
#pragma warning( error : 164 )

編譯器會將 4000 加入任何介於 0 到 999 的警告編號。

對於 4700-4999,也就是使用程式碼產生關聯,該範圍中的警告編號警告編譯器遇到函式開啟的大括號時,作用中的狀態會作用中接下來的函式。使用warning pragma,若要變更其編號大於 4699 的警告狀態函式中才會生效函式結尾之後。下列範例會示範正確放置warning pragma,停用程式碼產生警告訊息,然後將它還原。

// 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
}

請注意,整個函式本文中的最後一次設定warning pragma 實際上用於整個函式。

Push 和 pop 兩

warning Pragma 也支援下列的語法。

#pragma warning( push [ ,n ] )

#pragma warning( pop )

其中n代表的警告層級 (從 1 到 4)。

Pragma warning( push ) 會儲存目前的警告狀態,對於每個警告。Pragma warning( push, n) 會儲存每個警告的目前狀態,並將通用的警告層級設定成n。

Pragma warning( pop ) 的最後的警告狀態推入至堆疊的 pop。介於警告狀態所作的任何變更push和pop更動尚未完成。請考量以下範例:

#pragma warning( push )
#pragma warning( disable : 4705 )
#pragma warning( disable : 4706 )
#pragma warning( disable : 4707 )
// Some code
#pragma warning( pop ) 

在這段程式碼,最後pop還原的每個警告狀態 (包括 4705、 4706 和 4707) 成原來的程式碼的開頭。

在撰寫標頭檔時,您可以使用push和pop以確保使用者所做的警告狀態變更不會在無法正確地編譯防止標頭。使用push標頭的開頭和pop在結尾。比方說,如果您不會編譯完全在警告層級 4 的標頭,則下列程式碼會警告層級變更為 3,然後再還原原始的警告層級在標頭的結尾。

#pragma warning( push, 3 )
// Declarations/definitions
#pragma warning( pop ) 

如需有關編譯器幫助您的選項會抑制警告,請參閱 /FI/w

請參閱

參考

Pragma 指示詞 」 和 「 __Pragma 關鍵字