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

How to prevent `#warning` messages from being treated as an error?

本文关键字:错误 消息 何防止 #warning      更新时间:2023-10-16

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

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

谁能帮我解决这个问题?

在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中,这是默认值,所以知道传递它可能不再太有用了。

本地禁用-Werror#warning的影响如下:

#pragma GCC diagnostic push
#pragma GCC diagnostic warning "-Wcpp"
#warning Informative message: everything is nice and good!!!
#pragma GCC diagnostic pop
这种方法的好处是,您仍然可以在代码的其他地方诱导#warning错误。