我们正在整理我们的代码库,其中包括修复所有编译器警告(等等)。
最终目标是打开将所有警告转换为错误的标志。我们遇到了系统和第三方标题的轻微障碍。某些系统标头会导致各种编译器发出警告。现在显然我们无法修改系统头来修复这些警告。
使用intel编译器(和gcc),在构建包含路径时,只需使用-isystem而不是-I来告诉编译器这些目录中的头是系统头,并且它会停止对它们发出警告。然后打开-Werror标志就是一件简单的事情。
我们也在使用Sun Studio 12,标志-errwarn =%all应该相当于-Werror,但我找不到告诉编译器忽略system / thirdparty头文件中的警告的方法。有-errhdr标志,但这似乎没有我想要的。
有没有人知道如何使用Sun Studio 12完成此操作?
答案 0 :(得分:2)
显然,这并不是你想要的,但是如果没有更好的东西,你可以在#pragma error_messages块中包装有问题的包含。 E.g。
#pragma error_messages (on , tag .. tag)
#include <map>
// etc
#pragma error_messages (default , tag .. tag)
如here所述。我目前无法访问Solaris,因此我没有尝试过这个。
答案 1 :(得分:1)
另一种选择是使用 -errtags 查看警告标记,然后使用 -erroff 关闭特定警告。
答案 2 :(得分:0)
不幸的是(据我所知),errhdr
标志是你能得到的最好的。很高兴您使用的是Sun Studio 12,因为它刚刚在该版本中添加。