2013-05-13 92 views
0

我有很多頭文件和C++項目的源代碼。我想壓制警告,因此開始瞭解#pragma警告預處理器。我能夠抑制一種警告,即4251,通過把 的#pragma警告(推) 的#pragma警告(禁用:4251) ......一些聲明/原型 的#pragma警告(POP)何處放置#prama警告預處理器指令以禁止警告?

在相應源文件(utils.cpp)的頭文件(utils.h)中,顯示了此警告。

現在,還有一種警告(4146),這是發生在我的源文件clah.cpp。如上所述,我將相同的代碼放入此文件的頭文件(clahe.h)中。但是,編譯器無法抑制此警告?你能告訴我,我是否在某個地方犯了一個錯誤?或者,我錯誤地將雜注語句?謝謝。

P.S.,我是C++的初學者。

回答

0

如果你有,有一個

#pragma warning(push) 
頂部

#pragma warning(pop) 

在底部的頭部,頭部被解析在此之後,警報設置被重置。您還需要在您的cpp文件中添加一個pragma

#include "someheader.h" 

//this is the implementation file 
//some code 

翻譯,基本上到:

//contents of the header file 
#pragma warning(push) 
#pragma warning(disable:4251) 

//warning is disabled here 

#pragma warning(pop) 

//popped - initial state (warning enabled) back 

//this is the implementation file 
//some code 
+0

謝謝@Luchian格里戈裏。現在它的工作就是將#pragma blah blah代碼直接放到源文件中。但是,我仍然懷疑爲什麼第一次警告(4251),當我將#pragma blah放在頭文件中時,它正在工作?爲什麼不爲第二種情況(4146),現在正在通過將#pragma blah直接放在源代碼中工作。再次感謝。 – Sanchit 2013-05-13 07:55:24

+0

@Sanchit可能在項目屬性中某處被禁用。轉到屬性並查找禁用的警告部分(對不起,不知道我的頭頂上的完整路徑)。它也可能是4251是一個較低級別的警告,你有那些壓制。 – 2013-05-13 08:01:31