2011-12-14 43 views
8

我试图编译在现有的代码库中引入-Werror标志。我遇到的其中一个问题是在某些地方#warning用于显示信息性消息。这些不应该被视为错误。如何防止将#警告消息视为错误?

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

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

+5

那么,你滥用'#警告'。摆脱那个,问题解决了。 –

+4

@CatPlusPlus:发布替代方案怎么样? – UncleBens

+1

@UncleBens:我需要看看它实际上在那里做了什么建议替代“除去它”。它有可能被构建系统级别的东西所取代。 –

回答

4

在gcc-4.6及以上版本中,您可以使用-Wno-error=cpp。至少在Lion和后来发布的叮当声中,您可以使用-Wno-error=#warnings。但是由于你的构建服务器使用了一个古老的gcc,你可能在那里运气不好。

一般情况下,通过-fdiagnostics出现选项有警告显示像输出:

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

告诉你,控制警告的警告标志。在gcc> = 4.6和clang中,这是默认值,所以知道通过它可能不再有用。的-Werror#warning

1

本地禁用效果如下:

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

这种方法的好处是,你仍然会感应误差#warning在代码的其他地方。

+2

上面的代码看起来不适用于gcc 4.1.2 - 我得到了“警告:忽略#pragma GCC诊断”,并且#warning行被拾取为错误(因为 - 错误已定义) –