奇怪的语法错误在基于范围的循环中报告
Strange syntax error reported in a range-based for loop
在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 : '}'
在包含单个分号的线上。我找到了编译器错误吗?还是基于我理解的基于循环的范围?
总结以将来以这种方式来的任何人的评论:
这显然是Visual Studio 2012和2013中的编译器错误。Visual Studio给出的错误消息显然是虚假的,其他编译器则按预期工作。
对我而言,最简单的解决方法是在整个循环周围放置牙套:
:int main(int argc, char* argv[])
{
int xs[1];
for (auto x : xs)
{
do
;
while (0);
}
return 0;
}
感谢大家的帮助。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 尝试通过多个向量访问变量时,向量下标超出范围
- 错误:未在此范围内声明'reverse'
- Android NDK传感器向事件队列报告奇怪的间隔
- 如何在 C 中正确使用 libiconv 使其不会报告"Arg list too long"?
- 正在将指针转换为范围
- 使用std::transform将一个范围的元素添加到另一个范围中
- 在基于范围的for循环中使用结构化绑定声明
- 使用std::source_location报告错误的最佳实践
- xmake总是报告:错误:无法获取cxx的程序,为什么
- 如何计算数据类型的范围,例如int
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 当用户超过按钮点击限制时报告
- 在C++中查找范围的长度
- 使用调试/崩溃报告将应用程序部署到客户端
- 如何设置一个范围来提取我想要获得的信息
- Windows 错误报告和超出范围的异常
- 从覆盖范围报告中删除自动生成的异常代码
- 奇怪的语法错误在基于范围的循环中报告
- 编译器可以报告未知属性上的错误吗?即使有范围