以下のように定義された2つの構造があります。
#include<stdint.h>
typedef struct
{
uint32_t a;
uint8_t b;
uint8_t pad[3]; //padding here is added intentionally.
uint32_t c;
}A;
typedef struct
{
uint32_t a;
uint8_t b;
uint8_t pad[3];
uint32_t c;
}__attribute__((__packed__)) B;
これら 2 つの構造体は、すべてのハードウェア プラットフォームでまったく同じメモリ レイアウトを持つことが保証されていますか? コンパイラは常に gcc であると想定できます。