gpt4 book ai didi

c++ - 无法禁用由 Boost 库引起的警告

转载 作者:搜寻专家 更新时间:2023-10-31 02:20:16 24 4
gpt4 key购买 nike

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

我的问题是:是否有更可靠的方法可以在不修改 boost 代码的情况下禁用这些警告?我正在使用 Visual Studio 2010。

最佳答案

也许你看错了方向。正如 Alan Stokes 指出的那样,警告是有原因的。我有三个提示,它们可能不是您期望的答案,但可能会带来一个可以接受的解决方案:

  1. 不是消除警告,而是修复错误。我不知道你的代码,但是有 other people有一个类似的问题,可以通过声明一个变量来解决。

  2. 另一个问题是:为什么要将所有警告都变成错误?真的有必要吗?我同意正常代码应该始终在没有警告的情况下编译。但这些警告并非源自您自己的代码。考虑一个 static code-checker这会警告您编译器所忽略的问题。

  3. 如果您必须使用-WX,请将有问题的代码移动到静态对象/库/模块中,这样您就不会担心警告只有在你需要重新编译这个模块。您可以为此模块使用特定的编译选项,以完全消除警告。


还有另一种可能性,但我无法检查它是否真的有效。根据Microsoft Documentation可以设置特定警告的警告级别。 (有类似的 options for GCC )。首先,将所有警告切换为错误:

/WX

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

/W04510 /W04610

完整的命令行如下所示:

cl source.cpp /WX /W04510 /W04610

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

关于c++ - 无法禁用由 Boost 库引起的警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32914128/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com