C中位域结构中的位域结构
我试图找到另一种方法在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
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上的位字段声明,仍然需要一些测试,但我们会看到。