關於#pragma warning 用法的研究

在閱讀項目代碼時,對於 #pragma warning(disable : 4251) 這個語句不是很理解,如今有時間查閱了一些資料整理以下,以備之後查找使用,也給對此有疑問提的朋友一個參考;若是有不當之處,歡迎指正;
該指令容許有選擇性的修改編譯器的警告消息的行爲
指令格式以下:
#pragma warning( warning-specifier : warning-number-list [; warning-specifier : warning-number-list...]
#pragma warning( push[ ,n ] )
#pragma warning( pop )

主要用到的警告表示有以下幾個:編程

once:只顯示一次(警告/錯誤等)消息
default:重置編譯器的警告行爲到默認狀態
1,2,3,4:四個警告級別
disable:禁止指定的警告信息
error:將指定的警告信息做爲錯誤報告spa

若是你們對上面的解釋不是很理解,能夠參考一下下面的例子及說明
 
#pragma warning( disable : 4507 34; once : 4385; error : 164 )  
等價於:  
#pragma warning(disable:4507 34)  // 不顯示4507和34號警告信息  
#pragma warning(once:4385)        // 4385號警告信息僅報告一次  
#pragma warning(error:164)        // 把164號警告信息做爲一個錯誤。  
同時這個pragma warning 也支持以下格式:  
#pragma warning( push [ ,n ] )  
#pragma warning( pop )  
這裏n表明一個警告等級(1---4)。  
#pragma warning( push )保存全部警告信息的現有的警告狀態。  
#pragma warning( push, n)保存全部警告信息的現有的警告狀態,而且把全局警告  
等級設定爲n。   
#pragma warning( pop )向棧中彈出最後一個警告信息,在入棧和出棧之間所做的  
一切改動取消。例如:  
#pragma warning( push )  
#pragma warning( disable : 4705 )  
#pragma warning( disable : 4706 )  
#pragma warning( disable : 4707 )  
#pragma warning( pop )ci

在這段代碼的最後,從新保存全部的警告信息(包括4705,4706和4707)編譯器

在使用標準C++進行編程的時候常常會獲得不少的警告信息,而這些警告信息都是沒必要要的提示,
因此咱們可使用#pragma warning(disable:4786)來禁止該類型的警告編譯

在vc中使用ADO的時候也會獲得沒必要要的警告信息,這個時候咱們能夠經過
#pragma warning(disable:4146)來消除該類型的警告信息error


相關文章
相關標籤/搜索