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]
答案 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
在循环后有值,那么这不起作用。
[是的,这是一个非常恼人的错误 - 我花了好几个小时盯着屏幕发现这种错误 - 有时候你会立即发现它!]