【发布时间】:2014-03-06 01:01:12
【问题描述】:
在 Visual Studio 2013 中,我在一个空的全新命令行解决方案中编写了以下内容:
int main(int argc, char* argv[])
{
int xs[1];
for (auto x : xs)
do
;
while (0);
return 0;
}
编译时出现以下错误:
error C2059: syntax error : '}'
在包含单个分号的行上。我发现编译器错误了吗?还是基于范围的 for 循环超出了我的理解范围?
【问题讨论】:
-
用 Clang 编译,所以我会说 bug。
-
你的代码不是读成
for (auto x : xs) { do; } while(0);吗? -
使用 g++ 4.8 编译。
-
@billz 我很确定它被解析为
for (auto x : xs) { do; while(0);},否则它应该是一个错误,因为do本身不是一个有效的关键字。他在do ... while中有一个空的声明。 -
billz - 我希望如此,因为您的代码在我的编译器中给出了相同的错误。但如果是这样,它一定是一个错误,因为 do-loop 必须有一段时间,并且整个循环应该被解析为单个语句..
标签: c++ visual-c++ c++11 visual-c++-2013