-isystem用于MS的Visual Studio C ++编译器
-
20-09-2019 - |
题
我通常喜欢有很多编程时启用警告。但是,有些库包含的代码,很容易导致警告(..,蟒蛇,QT,..)。当用gcc编译我可以只使用-isystem代替-I沉默一点。我怎样才能做到与MS的编译器一样吗?我知道报警的#pragma,但我想,不涉及具体的编译代码,所有的地方的解决方案。我也知道,我可以关闭特定的警告,但是这不是我想要的任何。
BTW:ISYSTEM应该是这个问题的一个标签,但我不能这样做..
摘要:我想看到的所有的从我的代码和警告的没有的外部代码警告
其他提示
此现在下/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