不能禁用由Boost库引起的警告

Cannot disable warnings caused by the Boost Library

本文关键字:警告 Boost 不能      更新时间:2023-10-16

我试图在我的项目中消除警告,这样我就可以打开将警告视为错误的标志。该项目使用boost库,特别是Concept_check.hpp和cuthill_mckee_ordered .hpp文件。警告4510和4610显示在concept_check.hpp文件中,我试图使用#pragma warning push and pop来禁用它们。警告是由于boost库试图使用在concept_check.cpp中找到的模板实例化一个类,而没有为它编写构造函数。

我的问题是:有没有更确定的方法,我可以禁用这些警告而不修改boost代码?我使用的是Visual studio 2010。

也许你看错方向了。正如艾伦·斯托克斯(Alan Stokes)指出的那样,这种警告是有原因的。我有三个提示,也许不是你期望的答案,但可能会带来一个可接受的解决方案:

  1. 而不是沉默警告,只是修复错误。我不知道你的代码,但也有其他人有类似的问题,可以通过声明一个变量来修复

  2. 另一个问题是:为什么你想把所有的警告都变成错误?真的有必要吗?我同意正常的代码在编译时应该没有警告。但是这些警告并非来自您自己的代码。考虑一个静态代码检查器,它会警告你编译器看不到的问题。

  3. 如果您必须使用-WX,请将违规代码移动到静态对象/库/模块中,以便仅在需要重新编译该模块时才会被警告所困扰。


还有另一种可能性,但我无法检查它是否真的有效。根据微软文档,可以设置特定警告的警告级别。(GCC也有类似的选项)。首先,将所有警告切换为error:

/WX

然后,将两个违规警告的警告级别设置为零:

/W04510 /W04610

一个完整的命令行应该是这样的:

cl source.cpp /WX /W04510 /W04610

最好的解决方案是将它与上面的提示3结合起来。这样,特定的编译器选项仅用于导致警告的文件。

也许这些解决办法有效。

你可以从。h文件中禁用特定的警告(#pragma warning(disable:…)).