int main(int argc,char* argv[]) { int xs[1]; for (auto x : xs) do ; while (0); return 0; }
编译时,我收到以下错误:
error C2059: Syntax error : '}'
在包含单个分号的行上.我找到了编译器错误吗?或者基于范围的循环是否超出了我的理解范围?
这显然是Visual Studio 2012和2013中的编译器错误.Visual Studio提供的错误消息显然是假的,其他编译器按预期工作.
对我来说最简单的解决方法是在整个do-while循环中放置大括号,如下所示:
int main(int argc,char* argv[]) { int xs[1]; for (auto x : xs) { do ; while (0); } return 0; }
感谢大家的帮助.