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

时间:2013-09-28 22:42:19

标签: c structure field bit

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

有点像这样:

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

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

但C编译器不喜欢它,它必须是位字段。 一位朋友提出使用工会,但是想知道是否有人知道除了使用工会之外的另一种方法吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

如果我这样做:

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;

接受分配,可以像bitfields一样使用。

答案 1 :(得分:0)

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