AdS*_*dSR 119 gcc warnings suppress-warnings gcc-warning
我有一个项目使用log4cxx,boost等库,其头文件生成大量(重复)警告.有没有办法抑制来自库包含的警告(即#include <some-header.h>)或包含某些路径?我希望像往常一样在项目代码中使用-Wall和/或-Wextra而不会隐藏相关信息.我目前在make输出上使用grep,但我想要更好的东西.
小智 121
您可以尝试使用-isystem
而不是包含库头-I
.这将使他们成为"系统标题",而GCC将不会为他们报告警告.
Dre*_*kes 98
对于那些使用CMake的用户,您可以修改include_directories
指令以包含SYSTEM
禁止针对此类标头发出警告的符号.
include_directories(SYSTEM "${LIB_DIR}/Include")
^^^^^^
Run Code Online (Sandbox Code Playgroud)
and*_*nes 50
你可以使用编译指示.例如:
// save diagnostic state
#pragma GCC diagnostic push
// turn off the specific warning. Can also use "-Wall"
#pragma GCC diagnostic ignored "-Wunused-but-set-variable"
#include <boost/uuid/uuid.hpp>
#include <boost/uuid/uuid_generators.hpp>
#include <boost/uuid/uuid_io.hpp>
#include <boost/lexical_cast.hpp>
// turn the warnings back on
#pragma GCC diagnostic pop
Run Code Online (Sandbox Code Playgroud)
#pragma
是编译器的指令.你可以在#include之前设置一些东西并在之后禁用它.
您也可以在命令行执行此操作.
另一个GCC页面专门用于禁用警告.
我会选择在源代码中使用#pragma,然后提供一个 合理的原因(作为注释),说明禁用警告的原因.这将意味着关于头文件的推理.
GCC通过对警告类型进行分类来解决此问题.您可以将它们分类为警告或被忽略.之前链接的文章将向您显示可能禁用的警告.
注意:您还可以按摩源代码以通过使用属性来防止某些警告; 但是,这与GCC非常接近.
注2:GCC还使用microsoft编译器中使用的pop/push接口 --Microsoft通过此接口禁用警告.我建议你进一步调查,因为我不知道它是否可能.
归档时间: |
|
查看次数: |
40161 次 |
最近记录: |