首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同时使用基于范围的for循环和do while循环时VS2013上的编译错误

同时使用基于范围的for循环和do while循环时VS2013上的编译错误
EN

Stack Overflow用户
提问于 2016-01-08 09:42:17
回答 2查看 116关注 0票数 2
代码语言:javascript
复制
#include <vector>

int main()
{
    std::vector<int> v;
    for (int x : v) do {} while (0);
}

在VS2013上编译上面的代码将产生error C2059: syntax error : '}'。然而,GCC可以成功地编译代码。

若要再现错误,应满足下列要求:

  1. 使用范围为基础的循环;
  2. 不要用“{}”包围for-循环体;
  3. 在for-循环体中只编写一个"do while“语句。

对此有什么见解吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-08 09:51:29

这是一个bug,并且是在VS2015中修复的。

票数 0
EN

Stack Overflow用户

发布于 2016-01-08 10:10:28

可以使用括号来避免MSVC 2013错误。以下代码在MSVC 2013更新4中编译良好:

代码语言:javascript
复制
std::vector<int> v;
for (int x : v)
{
    do
    {
    } while (0);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34673799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档