主題が言うように、同じ構造を計算する同じ操作の異なる結果を得ました。構造体は以下です。
struct test
{
char m1;
double d1;
}
Linux で gcc-4.6.3 と gcc-4.2 で sizeof(struct test) を使用して計算すると、「12」という結果が得られました。Linux で gcc-4.6.1 を使用し、WinXP で VC 6.0 を使用しているときに、「16」という結果が得られました。だから私は混乱しています、なぜこれが起こるのですか?GCCは構造体のサイズをどのように計算しますか?
追加した:
答えが言うように、arm linux は AAPCS 定義に 8 バイトのアラインメントを必要としますが、x86 の vc 6.0 が結果「16」を取得するのはなぜですか?VC 2003 以降を使用している人はいますか?
さらに、C89/C99 などの C 標準はこれを定義していますか?