スニペットは次のとおりです。
#pragma pack(4)
struct s1
{
char a;
long b;
};
#pragma pack()
#pragma pack(2)
struct s2
{
char c;
struct s1 st1;
};
#pragma pack()
#pragma pack(2)
struct s3
{
char a;
long b;
};
#pragma pack()
#pragma pack(4)
struct s4
{
char c;
struct s3 st3;
};
#pragma pack()
sizeof(s4)は10または12である必要がありますが、8であることがわかりました。VisualC++6.0を使用しています。誰かが理由を教えてもらえますか?