ARM v7sあたりまでは気にしなくてよかったのですが。
最近、よく思うこと
Objective-Cでは以下が通らない。
#define BYTE unsinged char struct ByteStruct { BYTE A; BYTE B; int C; }
そして、当たり前のように書く
struct ByteStruct *TestStruct; TestStruct=hogehoge //ポインタメンバ参照 エラーになる。Visual C++ではOK TestStruct->A=(BYTE)10; TestStruct->B=(BYTE)20; TestStruct->C=30;
回避方法 struct ByteStruct *TestStruct,FuncStruct; TestStruct=hogehoge //スタティクに代入して一気に転送 FuncStruct.A=(BYTE)10; FuncStruct.B=(BYTE)20; FuncStruct.C=30; movemem((void*)TestStruct,(void*)&FuncStruct,sizeof(struct ByteStruct))
BYTE境界の構造体で発生する。メンバが32bit境界に配置されていると行ける感じ