C中位域结构中的位域结构

C中位域结构中的位域结构,c,structure,field,bit,C,Structure,Field,Bit,我试图找到另一种方法在C中的位域结构中创建位域结构 有点像这样: typedef struct { int A : 16; int B : 16; } Struct1; typedef struct { int A : 16; Struct1 B : 32; } Struct2; 但是C编译器不喜欢它,它必须是位域。 一位朋友提出了使用工会的想法,但他想知道除了使用工会之外,是否还有人知道其他方法 谢谢 可能对您有所帮助。当然,您必须稍微更改声明 如果我这样做: ty

我试图找到另一种方法在C中的位域结构中创建位域结构

有点像这样:

typedef struct
{
  int A : 16;
  int B : 16;
} Struct1;

typedef struct
{
  int A     : 16;
  Struct1 B : 32;
} Struct2;
但是C编译器不喜欢它,它必须是位域。 一位朋友提出了使用工会的想法,但他想知道除了使用工会之外,是否还有人知道其他方法

谢谢

可能对您有所帮助。当然,您必须稍微更改声明

如果我这样做:

typedef struct
{
  int A : 16;
  int B : 16;
} Struct1;

typedef struct
{
  int A     : 16;
  Struct1 B;
} Struct2;
然后

Struct2 abc;

abc.A = 0x1111;

abc.B.A = 0x1123;

abc.B.B = 0x3334;

接受赋值并可以像位字段一样使用。

为什么需要/想要这样做?为什么不能使用一个结构并完成它?我正在将代码从ADA翻译为C,我们正在尽可能地接近ADAcan@shunyo--我们对一些建筑也这样做了,,但不能这样做会让所有人them@ryyker好的questoin让我检查一下谢谢,Ryker的评论似乎起到了作用!只需删除Struct1上的位字段声明,仍然需要一些测试,但我们会看到。