5

我们可以structfor循环内声明匿名如下(g++)

for(struct { bool OK = true; } s; s.OK; s.OK = false)
  std::cout << "Hello, world!\n";

但是,此代码导致MSVC中的编译错误为:

source_file.cpp(7):错误 C2332:“结构”:缺少标记名称
source_file.cpp(7):错误 C2062:类型“布尔”意外
source_file.cpp(7):错误 C4430:缺少类型说明符 - 假定为 int。
注意:C++ 不支持默认整数

如何解决?


版本

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community>cl
Microsoft (R) C/C++ Optimizing Compiler Version 19.14.26430 for x86
版权所有 (C) Microsoft Corporation。版权所有。

4

1 回答 1

1

请注意,MSVC 19.14 显示error C2062: type 'bool' unexpected了命名结构的偶数,S如下例所示:

  for(struct S { bool OK = true; } s; s.OK; s.OK = false)
    std::cout << "Hello, world!\n";

演示:https ://godbolt.org/z/Ev1GMGMYd

我认为最简单的解决方法是升级到下一个编译器版本 MSVC 19.15,这两个问题都得到了修复。演示:https ://godbolt.org/z/W14dvW5eW

于 2022-01-03T20:06:17.773 回答