无法禁用由 Boost 库引起的警告
Cannot disable warnings caused by the Boost Library
我正在尝试消除项目中的警告,这样我就可以打开将警告视为错误的标志。该项目使用 boost 库,特别是 Concept_check.hpp 和 cuthill_mckee_ordering.hpp 文件。警告 4510 和 4610 显示在 concept_check.hpp 文件中,我尝试使用 #pragma warning push and pop 禁用它们。这些警告是由于 boost 库在没有为它编写构造函数时尝试使用 concept_check.cpp 中找到的模板实例化 class 引起的。
我的问题是:有没有更可靠的方法可以在不修改增强代码的情况下禁用这些警告?我正在使用 Visual studio 2010。
也许你看错了方向。正如 Alan Stokes 指出的那样,警告是有原因的。我有三个提示,可能不是您期望的答案,但可能会带来 可接受的 解决方案:
不是消除警告,而是修复错误。我不知道你的代码,但 other people 有类似的问题,可以通过 声明 一个变量来解决。
另一个问题是:为什么要把你所有的警告都变成错误?真的有必要吗?我同意正常代码应该始终在没有警告的情况下编译。但这些警告并非源自您自己的代码。考虑一个 static code-checker,它会警告您编译器所忽略的问题。
如果您必须使用-WX
,请将有问题的代码移到静态代码中object/library/module,这样您就不会为仅当您需要重新编译此模块时才发出警告。您可以为此模块使用特定的编译选项,以完全消除警告。
还有另一种可能性,但我无法检查它是否真的有效。据Microsoft Documentation it is possible to set the warning level of specific warnings. (there are similar options for GCC)。首先,将所有警告切换为错误:
/WX
然后,将两个违规警告的警告级别设置为零:
/W04510 /W04610
完整的命令行如下所示:
cl source.cpp /WX /W04510 /W04610
最好的解决方案是将其与上面的提示 3 结合起来。这样,特定的编译器选项仅用于导致警告的文件。
也许 these 解决方案有效。
您可以禁用 .h 文件中的特定警告 (#pragma warning( disable: ... )。
我正在尝试消除项目中的警告,这样我就可以打开将警告视为错误的标志。该项目使用 boost 库,特别是 Concept_check.hpp 和 cuthill_mckee_ordering.hpp 文件。警告 4510 和 4610 显示在 concept_check.hpp 文件中,我尝试使用 #pragma warning push and pop 禁用它们。这些警告是由于 boost 库在没有为它编写构造函数时尝试使用 concept_check.cpp 中找到的模板实例化 class 引起的。
我的问题是:有没有更可靠的方法可以在不修改增强代码的情况下禁用这些警告?我正在使用 Visual studio 2010。
也许你看错了方向。正如 Alan Stokes 指出的那样,警告是有原因的。我有三个提示,可能不是您期望的答案,但可能会带来 可接受的 解决方案:
不是消除警告,而是修复错误。我不知道你的代码,但 other people 有类似的问题,可以通过 声明 一个变量来解决。
另一个问题是:为什么要把你所有的警告都变成错误?真的有必要吗?我同意正常代码应该始终在没有警告的情况下编译。但这些警告并非源自您自己的代码。考虑一个 static code-checker,它会警告您编译器所忽略的问题。
如果您必须使用
-WX
,请将有问题的代码移到静态代码中object/library/module,这样您就不会为仅当您需要重新编译此模块时才发出警告。您可以为此模块使用特定的编译选项,以完全消除警告。
还有另一种可能性,但我无法检查它是否真的有效。据Microsoft Documentation it is possible to set the warning level of specific warnings. (there are similar options for GCC)。首先,将所有警告切换为错误:
/WX
然后,将两个违规警告的警告级别设置为零:
/W04510 /W04610
完整的命令行如下所示:
cl source.cpp /WX /W04510 /W04610
最好的解决方案是将其与上面的提示 3 结合起来。这样,特定的编译器选项仅用于导致警告的文件。
也许 these 解决方案有效。
您可以禁用 .h 文件中的特定警告 (#pragma warning( disable: ... )。