我正在尝试消除项目中的警告,因此我可以打开将警告视为错误的标志。该项目使用boost库,特别是Concept_check.hpp和cuthill_mckee_ordering.hpp文件。警告4510和4610显示在concept_check.hpp文件中,我尝试使用#pragma warning push和pop禁用它们。警告是由boost库尝试使用concept_check.cpp中找到的模板实例化类时引起的,当没有为其编写构造函数时。
我的问题是:有没有更可靠的消防方式,我可以在不修改增强代码的情况下禁用这些警告?我正在使用Visual Studio 2010.
答案 0 :(得分:1)
也许these解决方案有效。
您可以从.h文件中禁用特定警告(#pragma warning(disable:...)。
答案 1 :(得分:0)
也许你正朝着错误的方向前进。正如艾伦斯托克斯指出的那样,警告是有原因的。我有三个提示可能不是您期望的答案,但可能带来可接受的解决方案:
而不是消除警告,只需修复错误。我不知道您的代码,但有other people类似的问题可以通过声明变量来修复。
另一个问题是:为什么要将所有警告变成错误?真的有必要吗?我同意普通代码应始终编译而不发出警告。但是这些警告并非源于您自己的代码。考虑一个static code-checker,它会警告您编译器无视的问题。
如果必须使用-WX
,请将违规代码移到静态对象/库/模块中,这样只有在需要重新编译时才会对警告感到困扰这个模块。您可以为此模块使用特定的编译选项,以完全不受警告的影响。
还有另一种可能性,但我无法检查它是否真的有效。根据{{3}},可以设置特定警告的警告级别。 (有类似的Microsoft Documentation)。首先,将所有警告切换为错误:
/WX
然后,将两个违规警告的警告级别设置为零:
/W04510 /W04610
完整的命令行如下所示:
cl source.cpp /WX /W04510 /W04610
最好的解决方案是将其与上面的提示3结合起来。这样,特定的编译器选项仅用于导致警告的文件。