检测循环/if括号后的分号
Detecting semicolon after loop/if brackets
在GCC中是否有任何标志(如clang中的-Wempty-body
),可以帮助我检测while/for循环大括号后的分号?有时候,人类很难发现这些简单的错误。
int i = 0;
for (i = 0; i < 10; ++i);
{
cout << i << endl;
}
我使用GCC 4.7.3和clang 3.2-1~exp9ubuntu1.
编辑:我还检查了编译器是否可以帮助我在"if-else语句"之后找到这些错误。
if (i == 0)
{
cout << i << endl;
}
else;
{
cout << i << endl;
}
有趣的是,gcc比clang(带有这个标志(-Wall -pedantic -Wempty-body
))更有帮助,通过打印警告:
main.cpp:30:9: warning: suggest braces around empty body in an ‘else’ statement [-Wempty-body]
try
$gcc -Wempty-body foo.c
或
这里明显的答案是"用clang++编译你的代码"(尽管我的x86-64的2.9版本似乎没有抓住这个特殊的问题,就像gcc 4.6.3没有抓住它一样-所以我不完全相信这个问题的原始前提是有效的)。
这个特殊的代码可以避免这个问题,通过使用这种形式,通过在for
循环之后给出一个使用i
的错误:
for(int i = ...)
不是int i;
for(i = ...)
当然,如果你想让i
在循环结束后有一个值,那就行不通了。
相关文章:
- 具有嵌套 if-else 的循环的时间复杂度
- do while 循环中的 if 语句以 yes 或 no 结尾
- 如何在C++中创建 if else 循环而不是多个嵌套?
- 什么可以用来替换代码中的循环和 if 语句?
- C++ 访问 if 语句(如果它们在 for 循环中)
- 试图避免在 for 循环中出现 if-else 语句,但代码似乎有一些错误
- 如何仅在父循环的所有迭代都为真时才执行嵌套的 if 语句?
- 这个 FOR-IF 循环的解释是什么?
- 为什么这个 IF 语句在循环内不打印
- 为什么循环没有中断,并且 if 条件没有按预期工作?
- 当我的 if 语句在字符串中找到空格时,在无限循环中切换
- 我的 if 语句打印在我的 while 循环中的每个 if 语句上,无论它是否为假
- C++-循环中的If语句工作不正常
- 在C++中做一个场景问题,我不确定如何处理布尔和if循环
- While循环和if/else语句工作不正常
- C++ |如何循环 If 语句而不每次都返回值
- 如何优化循环/if语句的C
- 如何运行代码循环 if (a==b) 并且不循环如果 a != b 没有"else"
- 检测循环/if括号后的分号
- C++ 在循环"if"内丢失赋值的变量