2013-05-13 93 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