【发布时间】:2019-03-09 04:49:32
【问题描述】:
您好,我有一个这样的定义结构:
typedef struct {
unsigned short Limit;
unsigned long Offset;
} DT_Info;
但是,它的实际大小是 16 字节而不是 10 字节。 “偏移量”将从 [DT_Info + 8] 开始。
有没有办法让编译器调整从 [DT_Info + 2] 开始的“偏移量”?
非常感谢!
【问题讨论】:
您好,我有一个这样的定义结构:
typedef struct {
unsigned short Limit;
unsigned long Offset;
} DT_Info;
但是,它的实际大小是 16 字节而不是 10 字节。 “偏移量”将从 [DT_Info + 8] 开始。
有没有办法让编译器调整从 [DT_Info + 2] 开始的“偏移量”?
非常感谢!
【问题讨论】:
额外的空间是对齐的填充。如果您确定您的目标架构不需要它,您可以通过在声明中添加__attribute__((__packed__)) 来禁用它。
【讨论】:
struct 和{ 之间,或者在} 和; 之间。
__attribute__((__packed__)) 时,您必须真正知道自己在做什么。您应该始终让编译器选择并使用sizeof() 来获取结构大小。