如何在 gcc 中明确禁用已定义变量的对齐?
拿这个代码:
typedef struct{
unsigned long long offset;
unsigned long long size;
unsigned long type;
unsigned long acpi;
}memstruct;
memstruct *memstrx;
这将定义一个大小为 24 字节的结构。
我试着做:
memstrx=(void*)(0x502);
所以
&memstrx[0]
应该有一个值 0x502
&memstrx[1]
, 0x51A
&memstrx[2]
, 0x532
...等等等等。
但事情似乎不太对劲。
相反,
&memstrx[1]
, 显示地址 0x522
&memstrx[2]
, 0x542
&memstrx[3]
, 0x552
... 等等等等。
我怀疑 GCC 已经隐式地将结构重新调整为 32 字节(从 24 字节),强制(每个条目的 64 位对齐)。而且我真的不希望这种行为只针对这种结构。我应该如何告诉 GCC 不对齐该结构?