gcc - 如何从库标题中禁止显示GCC警告?

  显示原文与译文双语对照的内容

我有一个使用 log4cxx 。boost 。等等 库的项目,这些库的头生成了大量的( 重复) 警告。 是否可以从库中取消警告包括( 例如 。 #include <some-header.h> ) 或者包含在某些路径中? 我想在项目代码中使用-Wall和/或者 -Wextra,而不需要隐藏相关信息。 我目前使用grep进行输出,但我希望有更好的。

时间: 原作者:

你可以尝试使用 -isystem 而不是 -I 来包含库头。 这将使它们成为"系统页眉",GCC不会向它们报告警告。

原作者:

对于使用against的对象,你可以修改 include_directories 指令,以包括符号 SYSTEM,以阻止这些标头的警告。


include_directories(SYSTEM"${LIB_DIR}/Include")


 ^^^^^^



原作者:

可以使用杂注。例如:


//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



原作者:

我找到了窍门。对于库,而不是-Idir在makefile中使用-isystem目录。 GCC然后将 boost 等等 视为系统包含,并忽略来自它们的任何警告。

原作者:

#pragma 是编译器的指令。 你可以在 #include 之前设置一些东西,然后在。

你还可以在 命令行 服务器上执行该操作。

另一个专门针对的GCC页面禁用警告警告。

如果你在源代码中使用 #pragma's,那么我将为你提供一个合理的合理的理由:为什么你要禁用警告的原因( 作为评论) 。 这就意味着要对头文件进行推理。

GCC通过分类来实现这一点:警告类型。 你可以将它们分类为警告或者被忽略。 先前链接的文章将向你显示哪些警告可能被禁用。

注意:你还可以通过使用属性来按摩源代码以防止某些警告;但是,这将非常接近于 GCC 。

Note2: GCC还使用了 pop/推接口( 如微软Microsoft中所使用的),通过这个界面禁用警告。 我建议你进一步调查一下我不知道是否可以能。

原作者:
...