【发布时间】:2012-01-24 06:41:36
【问题描述】:
如果我没有处理每个 if 语句的 else 条件,我想让编译器警告我。这是否存在于 clang 或 gcc 中?
澄清一下,我并不想为我的所有源代码启用此功能。但是,有时我根本无法不认真考虑每个单独的 else 块,因为设计是整个文件或大量代码。所以,我想,我真的在寻找一个可以打开和关闭的编译指示,以便为几千行非常重要的代码启用和禁用它。
把它想象成一个自动代码审查或静态分析工具。
说编译器不能这样做,因为它是合法的……在实践中不是问题。我见过的每一个 C/C++ 编译器都会很高兴地针对在语法和语义上完全有效的代码发出大量警告。 (例如在 gcc、-Wunused-value、-Wunused-label、-Wunreachable-code 等...)
【问题讨论】:
-
嗯,大部分
if语句没有有else子句。通过健康百分比,我的意思是在 30% 到 70% 之间。这样的警告会很愚蠢,会导致毫无意义的代码膨胀(else {}在每个if子句的末尾)和噪音。 -
我将在关于我的动机的问题中添加一个澄清性评论。
-
任何包含
throw、break、return或continue的if都有一个隐含的else:条件后面的其余代码。在这里要求一个显式的else语句将是一个糟糕的要求。 -
我不确定这些关键字中的任何一个如何影响 else,因为 if 块中的代码运行会要求else 不会阻止,反之亦然。
标签: c++ gcc syntax clang gcc-warning