当前位置:  开发笔记 > 编程语言 > 正文

有没有办法用pragma禁用所有警告?

如何解决《有没有办法用pragma禁用所有警告?》经验,为你挑选了3个好方法。

我已经开始了一个新项目,并决定确保在启用/ Wall选项的情况下干净地构建它.唯一的问题是并非所有第三方库(如boost)在没有警告的情况下编译,所以我在共享头中使用了这个:

#pragma warning(push)

#pragma warning(disable:4820)
#pragma warning(disable:4619)
#pragma warning(disable:4668)
#pragma warning(disable:4625)
#pragma warning(disable:4626)
#pragma warning(disable:4571)
#pragma warning(disable:4347)
#pragma warning(disable:4640)
#pragma warning(disable:4365)
#pragma warning(disable:4710)
#pragma warning(disable:4820)
#pragma warning(disable:4350)
#pragma warning(disable:4686)
#pragma warning(disable:4711)
#pragma warning(disable:4548)

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#pragma warning(pop)

这很好用,但每次添加新的boost标头时,我都要将它们生成的警告添加到列表中.有没有办法说禁用这段代码的所有警告?



1> Assaf Lavie..:

您可以按下/弹出一个低级别的警告,如下所示:

#pragma warning(push, 0)        

#include 
#include 
// ...

#pragma warning(pop)

但是要知道禁用所有警告是不可能的.例如,某些链接器警告无法关闭.


此外,有趣的是,如果使用`#pragma warning(pop)`,仍会发出一些警告(4514就是一个例子),这可能是因为在某些编译后的上下文中检测到了这些警告条件.
您禁用的警告数量无关紧要.'推'的数量必须与'pop'的数量相匹配.

2> EvilTeach..:
#pragma warning(disable:4820)
#pragma warning(disable:4619)
#pragma warning(disable:4668)

减少线路....

#pragma warning (disable : 4820 4619 4668)



3> Matt Warren..:

我之前所做的是设置“ W3”选项,而不是“ Wall”,然后在我放置的每个源.cpp文件中

#pragma warning(push, 4)

在所有“ #include ...”行之后的顶部,然后

#pragma warning(pop)

作为文件的最后一行。

这样,您将在代码中获得4级警告,而在第三方代码中获得3级警告,而您对此无能为力。


用“ #pragma warning”指令包装您自己的每个代码文件似乎要比只包装令人讨厌的第三方“ #includes”包装起来要多。但是如果它对你有用...
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有