2

以下のように定義された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 であると想定できます。

4

2 に答える 2