c - struct in struct - 有效c? - 有效的c ++? - 范围?

时间:2014-01-04 15:06:52

标签: c struct

我想定义以下结构和typedef:

typedef struct Atype
{
  int A;
  struct
  {
    int VERBOS;
  }
  IO;
}
Atype;

在main中我可以将变量定义为:

Atype In1,In2;
In1.A=3;
In1.IO.VERBOS=4;
In2.IO=In1.IO;

代码编译并运行(c-gcc-clang)但我必须为不同的环境编写代码。我的问题:

1)这些嵌套结构是否没有名称有效c?

2)有效的c ++?

3)IO的范围是什么?

3 个答案:

答案 0 :(得分:2)

这是C / C ++中的有效结构,它被称为未命名的结构。这是GCC的一个页面,其中包含对它的引用

  

http://gcc.gnu.org/onlinedocs/gcc/Unnamed-Fields.html

IO的范围与结构

中的任何其他字段没有区别

答案 1 :(得分:0)

  1. A相同的范围。

答案 2 :(得分:0)

为避免混淆,为什么不呢?

struct IO {
    int VERBOS;
};

typedef struct Atype {
  int A;
  struct IO;
} Atype;