日期:2014-05-16  浏览次数:20839 次

arm-linux-gcc 对齐问题
struct XXX
{
  char A;
  short B;
  char C;
};

测试结果是8字节.
加-fpack-struct则是4字节.
我希望象大多数编译器那样是6字节.
应该怎么做?



------解决方案--------------------
我希望象大多数编译器那样是6字节.
---------------------
大多数编译器也应改是8字节吧

可以指定
#pragma pack(2)

但是为了便于移植,其实结构体的排列都是紧密排列同时又保证4字节对齐的
需要设计结构体的时候不要吝啬,至少一个int ,或者2个short挨一起,或者4个char挨一起
------解决方案--------------------
探讨
至少我的测试结果gcc,cc,cl,bcc等都是6,就ARM特殊
#pragma pack(2)这个我考虑过对于下面的就不能得到正确结果1和8:
#pragma pack(2)
struct YYY
{
char LL;
}; //得到2
struct ZZZ
{
char A;
int B;
};//得到6

继续等待...

------解决方案--------------------

------解决方案--------------------
学习了
最好不要用这些“硬”的技巧。

------解决方案--------------------
强烈建议不要将内存地址影射数据结构,这样就不用管它几个字节了.
鄙视这样的做法