不能禁用由Boost库引起的警告
Cannot disable warnings caused by the Boost Library
我试图在我的项目中消除警告,这样我就可以打开将警告视为错误的标志。该项目使用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)指出的那样,这种警告是有原因的。我有三个提示,也许不是你期望的答案,但可能会带来一个可接受的解决方案:
-
而不是沉默警告,只是修复错误。我不知道你的代码,但也有其他人有类似的问题,可以通过声明一个变量来修复
-
另一个问题是:为什么你想把所有的警告都变成错误?真的有必要吗?我同意正常的代码在编译时应该没有警告。但是这些警告并非来自您自己的代码。考虑一个静态代码检查器,它会警告你编译器看不到的问题。
-
如果您必须使用
-WX
,请将违规代码移动到静态对象/库/模块中,以便仅在需要重新编译该模块时才会被警告所困扰。
还有另一种可能性,但我无法检查它是否真的有效。根据微软文档,可以设置特定警告的警告级别。(GCC也有类似的选项)。首先,将所有警告切换为error:
/WX
然后,将两个违规警告的警告级别设置为零:
/W04510 /W04610
一个完整的命令行应该是这样的:
cl source.cpp /WX /W04510 /W04610
最好的解决方案是将它与上面的提示3结合起来。这样,特定的编译器选项仅用于导致警告的文件。
也许这些解决办法有效。
你可以从。h文件中禁用特定的警告(#pragma warning(disable:…)).
- 理解boost::asio-async_read在无需读取内容时的行为
- 警告处理为错误这里有什么问题
- 来自 Boost 的 JSON 解析器的警告 C4512 的解决方法
- 使用Boost :: black在boost :: variant中使用时,请警告编译器
- Boost序列化程序:除非使用虚拟类析构函数,否则将收到警告C4308
- boost::asio充满了警告
- jom.exe返回witd exitcode 2和许多Boost警告
- 为什么调用boost::split()会发出这么多警告
- 在 Boost 周围使用"#pragma warning"时的警告 C4503 包括
- 如何在x64上使用boost:gil:png_write_view避免此警告
- boost::lexical_cast编译时出现警告
- 抑制来自boost的警告
- 不能禁用由Boost库引起的警告
- Boost -在构建时关于解引用指针的警告
- 编译器警告在boost crc.hpp与Visual c++(错误C4244)
- boost::asio async_read_some async_read_until编译器警告
- 在c++ Builder中编译Boost库时的警告
- c++编译器在使用boost:: expression时给出了几页的警告
- 尝试初始化 wregex 对象时 boost 的 regex_traits_defaults.hpp 中的缩小转换警告
- 编译时带有boost::split的警告