我有以下代码:
typedef unsigned short u16;
struct S {
struct {
u16 a: 9;
u16 b: 1;
u16 c: 1;
u16 d: 1;
} __attribute__((packed));
u16 e: 4;
} __attribute__((packed));当我检查sizeof(S)时,它会返回3.是否可以以某种方式指示gcc跨匿名结构合并位域,以便sizeof(S)返回2。
发布于 2022-02-22 19:50:49
您正在寻找的结果可以通过使结构union代替,与两个位字段重叠来获得。第一个位字段所使用的位将在第二个位中标记为“保留”:
union S {
struct {
u16 a: 9;
u16 b: 1;
u16 c: 1;
u16 d: 1;
} ;
struct {
u16 reserved: 12; // Number of bits used in the first struct
u16 e: 4;
};
};https://stackoverflow.com/questions/71227275
复制相似问题