我通常喜欢有很多编程时启用警告。但是,有些库包含的代码,很容易导致警告(..,蟒蛇,QT,..)。当用gcc编译我可以只使用-isystem代替-I沉默一点。我怎样才能做到与MS的编译器一样吗?我知道报警的#pragma,但我想,不涉及具体的编译代码,所有的地方的解决方案。我也知道,我可以关闭特定的警告,但是这不是我想要的任何。

BTW:ISYSTEM应该是这个问题的一个标签,但我不能这样做..

摘要:我想看到的所有的从我的代码和警告的没有的外部代码警告

有帮助吗?

解决方案

<强>由于2017年8月17日这似乎仍然是不可能的。

我在这里增加了一个功能请求:

https://开头developercommunity.visualstudio.com/content/problem/96411/impossible-to-ignore-warnings-from-system-librarie.html

<强>更新2018:

该问题现已关闭固定和可在标准的MS VS安装[。 从MS团队博客中经历的新功能[的这里]。

从MS的解决方案是柔性的。你不仅可以区分像你--isystem做使用的路径,但是例如也不管你用#include ""#include <>。该博客文章值得一读,看看所有的各种定制点。

最后警告是对我也可用在MS VS平台上。

其他提示

此现在下/experimental:external /external:I system_include_path /external:W0存在。请参见 https://blogs.msdn.microsoft。 COM / vcblog /十二分之二千零一十七/ 13 /断开的警告理论/ 有更多的信息。

没有,MSVC不具有-isystem等效。


看从CL输出的输出/? :

  

/ WD禁用警告Ñ

     

/我们把警告n的错误

     

/ WO问题警告Ñ一次

     

/ w的集合警告级别1-4对于n

请注意,这禁用整个项目的警告;我记得使用Qt的时候我宁愿改变它的将#pragma警告禁止主标题,并在年底重新启用,所以我仍然可以看到所有的警告我自己的源代码。

修改笔者编辑了他的问题,更新的答案:有没有办法让有警告和Qt代码的代码,而无需使用编译器标志警告:你打算怎么告诉编译器是什么“你的”代码?

请注意,上面的标志可以在文件级应用一样,所以这将允许您禁用只有那些在你包括Qt的头文件的警告,但还是的意味着你不能看到他们自己的代码中的文件。

因此,我留以上回答;它是不是很漂亮,但我敢肯定它是唯一的方法:在开始和Qt物管结束使用#pragma。要么改变Qt的标题(甚至更难看),或选择这样的较少侵入性的方式:

//your source/header file
#include "shutuppqt.h"
#include <QString>
#include "enableallwarnings.h"

例如 “shutuppqt.h”

#ifdef MSVC
  #pragma warning ( disable : 4222 ) //or whatever warning Qt emits
#else
  //....
#endif

例如 “enableallwarnings.h”

#ifdef MSVC
  #pragma warning ( enable : 4222 ) //or default instead of enable
#else
  //....
#endif
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top