如果我没有处理每个 if 语句的 else 条件,我想让编译器发出警告。这是否存在于 clang 或 gcc ?
中为了澄清,我并没有尝试将所有源代码放在上面。但是,有时整个文件或大量的代码,我根本无法承受不考虑每一个其他块的设计。因此,我想,我真的在寻找一个pragma,我可以打开和关闭以启用和禁用几千行非常重要的代码。
将其设想为自动代码审查或静态分析工具。
要说编译器不能这样做,因为它是合法的......在实践中不是问题。我见过的每个C / C ++编译器都会很乐意发出大量警告,以防止在语法和语义上完全有效的代码。 (例如在gcc中,-Wunused-value,-Wunused-label,-Wunreachable-code等...)
答案 0 :(得分:8)
如果确实想要这个,我建议您下载Cppcheck并为此添加支票。 Cppcheck执行简单的基于文本的匹配以检查规则集。警告缺少else
条款是合理的直截了当。
我在missing-else
分支中实现了“遗漏其他”的原型检查:https://github.com/ghewgill/cppcheck/tree/missing-else。由于新的意外风格警告(在其他合法代码上),它通过了自己的测试,但未通过许多其他测试。
答案 1 :(得分:3)
编译器根本不能,简单的if()
是有效的条件语句
编译器警告可能存在语义错误,它们并不意味着拥有/提供调试功能
要获得这些功能,您将不得不依赖一些专门为此目的而制作的代码分析工具。
答案 2 :(得分:0)
我担心这样的支票会引发一大堆警告,因为很多代码都没有使用else条款。但是,如果您只是想检查代码,可以使用这些小宏:
#define IF
#define THEN ?
#define ELSE :
然后你就像这样编写你的代码:
int foo(bool flag)
{
return IF(flag) THEN 0 ELSE -1;
}
当然这是一个坏主意。