【发布时间】:2013-06-12 04:46:59
【问题描述】:
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 statements”之后找到这些错误。
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]
【问题讨论】:
-
再想一想,这不是重复的,抱歉。但是,
-Wempty-body不也是 GCC 标志吗? -
在我看来,这似乎是一个很好的理由(即除了风格之外)将开始
{与if/for/while等放在同一行并拥有同一行也有单行。 -
我在进行全面研究之前就开始写答案,但似乎“像
-Wempty-bodyin clang”这样的说法有点误导。我的 g++ (4.6.3) 或 clang++ (2.9) 版本在使用-Wempty-body时都没有发出警告。 -
显然有太多误报,人们开始争论如何让评论或宏的存在(扩展为无)抑制警告,那时整个想法就被废弃了。 gcc.gnu.org/ml/gcc-patches/2008-11/msg00361.html
标签: c++ c gcc compiler-construction clang