使用gcc编译C++时建议加入的-W选项

16

我正在寻找一份关于C++的g++编译器推荐警告选项列表,但只能找到这些内容:Recommended gcc warning options for CUseful GCC flags for C,它们都非常特定于C语言。

-Wall和-Wextra选项可以启用大部分gcc所能生成的警告信息,但并不包括所有的警告。

在编译C++时应该开启哪些特别的警告选项?


可能是 https://dev59.com/CFPTa4cB1Zd3GeqPiE4F 的重复问题。 - Philipp
2个回答

22

-Wall -Wextra 常常涵盖了真正值得关注的警告信息。我个人也喜欢使用 -ansi -pedantic 进行编译,有时也会加上 -Wshadow

此外,-Weffc++ 有时也会提出更好的代码质量建议,但它可能会有点嘈杂并且不是100%有用。

编辑 在现代C++时代,你应该使用 -std=c++14 -pedantic 或者你选择的版本来替换 -ansi -pedantic,因为 -ansi 会将编译器置于 C++98/C++-03 模式下。


1
以前从未听说过effc++,看起来很有趣。 - pmr
@stefan 你怎么会认为我没有它们呢?只是编译器开关让我感到惊讶 :) - pmr
@pmr 然而这些书仍然很棒。 - stefan
1
不幸的是,-Weffc++ 的设计/维护不太好,它报告了太多无用的东西。遗憾的是,我不得不禁用它。 - Offirmo
1
@Offirmo:是的,我同意,这就是为什么我说它可能会很嘈杂,而且并不总是有用的原因。 - Evan Teran
显示剩余2条评论

3

9
-Wstrict-aliasing 包含在 -Wall 选项中。 - lefticus
@lefticus 很酷!我不知道那个。它是一个“新”的添加还是我一直很盲,很酷! - stefan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接