05/01/14 13:00:57
自分の自作言語でC言語の構造体のアラインメントを
エミュレートしたいのですが、メンバオフセットの決め方がよくわかりません。
例えば#pragma pack(4)のとき、
typedef struct {
int a; // offset 0
char b[1]; // offset 4
int c; // offset 8
} X;
となるのはいいんですが、
typedef struct {
int a; // offset 0
char b[1]; // offset 4
short c; // offset 6
short d; // offset 8
int e; // offset 12
} Y;
shortが offset=6になる理屈がわかりません。
これは暗黙的にwordのアラインメントも働いているということでしょうか?