我试图编译在现有的代码库中引入-Werror
标志。我遇到的其中一个问题是在某些地方#warning
用于显示信息性消息。这些不应该被视为错误。如何防止将#警告消息视为错误?
一种解决方法是使用#pragma message
来代替,但这似乎不被旧版本的gcc支持。 (我们的构建服务器使用gcc 4.1.2)。
任何人都可以帮我解决这个问题吗?
我试图编译在现有的代码库中引入-Werror
标志。我遇到的其中一个问题是在某些地方#warning
用于显示信息性消息。这些不应该被视为错误。如何防止将#警告消息视为错误?
一种解决方法是使用#pragma message
来代替,但这似乎不被旧版本的gcc支持。 (我们的构建服务器使用gcc 4.1.2)。
任何人都可以帮我解决这个问题吗?
在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
本地禁用效果如下:
#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-Wcpp"
#warning Informative message: everything is nice and good!!!
#pragma GCC diagnostic pop
这种方法的好处是,你仍然会感应误差#warning
在代码的其他地方。
上面的代码看起来不适用于gcc 4.1.2 - 我得到了“警告:忽略#pragma GCC诊断”,并且#warning行被拾取为错误(因为 - 错误已定义) –
那么,你滥用'#警告'。摆脱那个,问题解决了。 –
@CatPlusPlus:发布替代方案怎么样? – UncleBens
@UncleBens:我需要看看它实际上在那里做了什么建议替代“除去它”。它有可能被构建系统级别的东西所取代。 –