c – 你可以使用一个无名结构或联合?

我可以看看怎么样
union {
uint32_t ip_address
 struct {
          uint8_t oct1;
          uint8_t oct2;
          uint8_t oct3;
          uint8_t oct4;
        };
};

可能对某人有某种用处,但在这里的结构示例中是struct:
Detail of MS warning C4201似乎有点奇怪.任何人都可以表现出良好的用例

解决方法

一个结构中的一个无名的联合是有意义的,因为它允许你引用联盟的成员,而不指定它的名称,因此更短的代码
struct {
  int a;

  union {
    int b,c,d;
  };
} foo;

所以访问联盟的成员就像访问包含struct foo.a和foo.b的成员一样.否则,您必须使用foo.union_name.b访问联合成员.

当然,使用这样一个结构体的“用户”程序员应该知道设置foo.c会影响foo.b和foo.d的值.

由于相同的原因,可以做到这一点,即将一个匿名结构放在一个联合中:

union {
  struct {
    int a,b;
  };

  int c;
} foo;

这样,foo.a和foo.b可以同时使用,而foo.c可以在另一种情况下使用.

我不能想到匿名结构或工会的任何其他用途. “声明”一个匿名结构/联合是一个矛盾,就像说int;而不是int a.

相关文章

本程序的编译和运行环境如下(如果有运行方面的问题欢迎在评...
水了一学期的院选修,万万没想到期末考试还有比较硬核的编程...
补充一下,先前文章末尾给出的下载链接的完整代码含有部分C&...
思路如标题所说采用模N取余法,难点是这个除法过程如何实现。...
本篇博客有更新!!!更新后效果图如下: 文章末尾的完整代码...
刚开始学习模块化程序设计时,估计大家都被形参和实参搞迷糊...