次のコードは、クロスコンパイル可能ですか?言い換えればメモリアライメント保証
struct Foo {
alignas(1) char c1;
alignas(1) char c2;
alignas(4) int i;
};
static_assert(sizeof(Foo) == (sizeof(int) + 4), "No cross-compilable");
は、それがどのようなアーキテクチャ/プラットフォーム用のsizeof(Foo) == (sizeof(int) + 4)
ことが保証されていますか?
厳密に言えば、私は言いません。私はアライメント仕様がパディングのオプションを否定するとは思わない。 – StoryTeller
@StoryTeller私は '+ 4'(つまり、パディングのために' + 2')を考慮しました。 –
それは事です。パディングは本当に縛られていません。あなたが指定した金額を超過する可能性は低いですが、実際には縛られていません。 – StoryTeller