循环后检测分号/如果括号

时间:2013-06-15 19:16:46

标签: c++ c gcc compiler-construction clang

GCC中是否有任何标志(如clang中的-Wempty-body),这可以帮助我在while / for循环的大括号后检测分号?有时人类很难找到这些简单的错误。

int i = 0;
for (i = 0; i < 10; ++i);
{
    cout << i << endl;
}

我使用GCC 4.7.3并且使用了3.2-1~exp9ubuntu1。

编辑: 我还检查编译器是否可以帮助我在&#34; if-else语句&#34;之后找到这些错误。

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]

2 个答案:

答案 0 :(得分:2)

  

$ gcc -Wempty-body foo.c

  

gcc -Wextra -c foo.c

答案 1 :(得分:1)

这里显而易见的答案是&#34;使用clang ++编译代码&#34; (虽然我对x86-64的2.9版本似乎没有抓住这个特殊问题,就像gcc 4.6.3没有抓住它一样 - 所以我并不完全相信这个问题的原始前提是有效的。)

此特定代码可以通过使用表单避免此问题,在i - 循环本身后使用for时出错:

for(int i = ...) 

而不是

int i;
for(i = ...)

当然,如果您希望i在循环后有值,那么这不起作用。

[是的,这是一个非常恼人的错误 - 我花了好几个小时盯着屏幕发现这种错误 - 有时候你会立即发现它!]