Archive for 10月 28th, 2015

Objective-Cの謎??ARM64から

水曜日, 10月 28th, 2015

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境界に配置されていると行ける感じ