我试图找到另一种在 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;
接受赋值并且可以像位域一样使用。
这可能对你有帮助。当然,您必须稍微更改声明。