在结构外部的C字节打包

时间:2016-01-23 06:15:05

标签: c struct

我想知道C是否在堆栈中包含字节以获得最佳的CPU检索,即使它们不在struct之内。如果没有,为什么要专门针对struct

1 个答案:

答案 0 :(得分:1)

结构在C中被广泛使用,并且编译器执行各种技巧(1)对象的对齐以获得特定体系结构映射的访问速度(2)(例如ARM-Thumb),其中开发人员可以编写代码以映射到外设寄存器。但有时,我们需要对不同系统(如网络协议)的传输进行明确控制。

从嵌入式系统(ARM)的角度来看,下面是一个具体的建议 - "外围位置应该使用__packed结构进行访问(其中允许未对齐的成员,并且有没有内部填充),或使用C位域。这是因为无法控制编译器正在执行的内存访问的数量和类型。结果是代码不可移植,具有不良副作用,并且无法按预期工作"。

另见Structure padding and packing