VS2013上同时使用基于范围的for循环和do while循环时出现编译错误
Compile error on VS2013 when range-based for loop and do while loop are used simultaneously
#include <vector>
int main()
{
std::vector<int> v;
for (int x : v) do {} while (0);
}
在VS2013上编译上面的代码将产生error C2059: syntax error : '}'
。但是,GCC 可以成功编译代码。
若要重现错误,应满足以下要求:
- 使用基于范围的 for 循环;
- 不要用"{}"包围for-loop主体;
- 在 for 循环正文中编写单个"do while"语句。
对此有什么见解吗?
这是一个
错误,在VS2015中已修复。
您可以使用括号来避免 MSVC 2013 错误。以下代码在 MSVC 2013 更新 4 中编译良好:
std::vector<int> v;
for (int x : v)
{
do
{
} while (0);
}
相关文章:
- 如果条件为TRUE(最佳方式?),则在do while循环中后置增量
- 即使没有满足他们的条件,我也无法通过一些 do-while 循环
- 如何使用 do while 循环确定最高值和最低值
- do while 循环中的 if 语句以 yes 或 no 结尾
- 在 C 或 C++ 中,循环可以同时具有 "do" 和"while"部分吗?
- 使用 while 或 do while 退出循环
- 带有开关语句的 do-while 循环 -- 无穷循环错误
- 为什么当我输入一个被接受的数字时,我的 do-while 循环没有中断?
- 为什么我的 Do-while 循环无法在C++中运行菜单
- 如果语句不会在 do - while 循环中运行
- 为什么当我对数组使用增量操作时,do for 循环不起作用
- 如何在c++中读取do-while循环中的空白
- 将嵌套的 for 循环更改为 do-while 循环
- 如何修复不会在退出选择时终止的 do-while 循环
- 带有do函数的无限循环
- 为什么这个do-while循环每隔一个循环只写入数组?
- C++ do/while 循环和 if/else: 骰子游戏 -- 第 75 行错误:"Cout"之前的预期"While" -- 如何解决这个问题?
- 卡在链表中的无限 Do-while 循环中
- 试图调节我的 do-while 以停止在终端中退出程序.菜单不会根据需要循环使用当前语句
- 使用基本 do-while 循环求解泊松方程