1

我们正在通过(除其他外)修复所有编译器警告来整理我们的代码库。

最终目标是打开将所有警告转换为错误的标志。我们在系统和第三方标头方面遇到了一些小问题。一些系统头文件会导致各种编译器发出警告。现在显然我们不能去修改系统头文件来修复这些警告。

使用 intel 编译器(和 gcc),您只需在构建包含路径时使用 -isystem 而不是 -I 来告诉编译器这些目录中的头文件是系统头文件,并且它会停止对它们发出警告。然后打开 -Werror 标志就很简单了。

我们也在使用 Sun Studio 12,标志 -errwarn=%all 应该等同于 -Werror,但我找不到告诉编译器忽略系统/第三方标头中的警告的方法。有 -errhdr 标志,但这似乎没有做我想要的。

有谁知道如何使用 Sun Studio 12 完成此任务?

4

3 回答 3

2

显然,这并不完全是您想要的,但在没有更好的情况下,您可以将有问题的包含包装在 #pragma error_messages 块中。例如

#pragma error_messages (on , tag .. tag)

#include <map>
// etc

#pragma error_messages (default , tag .. tag)

如此处所述。我目前无法访问 Solaris,所以我没有尝试过。

于 2011-01-26T15:16:46.800 回答
1

另一种选择是使用 -errtags 查看警告标签,然后使用-erroff关闭特定警告

于 2014-08-28T02:46:36.613 回答
0

不幸的是(据我所知),errhdr旗帜是你能得到的最好的。很高兴您使用的是 Sun Studio 12,因为它只是在该版本中添加的。

于 2011-01-26T13:35:26.837 回答