如何防止“#warning”消息被视为错误?

时间:2011-12-14 16:48:06

标签: c++ gcc

我正在尝试编译在现有代码库中引入-Werror标志。我遇到的一个问题是,在某些地方#warning用于显示信息性消息。这些不应被视为错误。

一种解决方案是使用#pragma message代替,但旧版本的gcc似乎不支持此功能。 (我们的构建服务器使用gcc 4.1.2)。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

在gcc-4.6及更高版本中,您可以使用-Wno-error=cpp。至少与Lion及以后发布的clang,您可以使用-Wno-error=#warnings。但是由于你的构建服务器使用的是古老的gcc,你可能在那里运气不好。

通常,传递-fdiagnostics-show-option以显示警告输出,如:

test.cc:1:2: warning: #warning hello [-Wcpp]

告诉你一个控制警告的警告标志。在gcc> = 4.6和clang中,这是默认值,因此知道传递它可能不再太有用了。

答案 1 :(得分:1)

本地停用-Werror#warning的效果,如下所示:

#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-Wcpp"
#warning Informative message: everything is nice and good!!!
#pragma GCC diagnostic pop

这种方法的好处是你仍然可以在代码的其他地方引发#warning错误。