5

在其中一个 SO 线程中,我看到了struct在 for 循环中使用 unnamed 作为多个不同类型变量的占位符:

例如:

for(struct {
      int i;
      double d;
      char c;
    } obj = { 1, 2.2, 'c' };
    obj.i < 10;
    ++obj.i)
{
  ...
}

这与 g++编译得很好。
这是标准的 C++03 语法吗?

4

2 回答 2

3

您可以在任何可以使用结构的地方使用未命名的结构 - 唯一的区别是它没有可以在其他地方使用的名称。您几乎可以在任何可以使用类型的地方声明新类型。在大多数地方这样做可能不是特别有意义,但那是另一回事。

除了在非常特殊的情况下,我不会完全推荐这个,但它是有效的。

于 2013-05-18T16:22:40.197 回答
-1

下面的代码将在 C++ (g++ 5.4.0) 中工作。

http://rextester.com/ELWLF59792

//g++  5.4.0

#include <iostream>

#include <stdio.h>

int main()
{
      int i = 0;

      for(struct st{ int a[9]; }t;i<3;i++)
            printf("%d\n", t.a);
}

下面的代码将在 C (gcc 5.4.0) 中工作。

//gcc 5.4.0

#include <stdio.h>

int main()
{
      int i = 0;
      struct st{ int a[9]; }t;
      for(;i<3;i++)
            printf("%d\n", t.a);
}
于 2018-05-29T10:55:08.287 回答