最近、次のスニペットに出くわしました。これは、のすべてのバイトi
(nad no more) が の個々の要素としてアクセスできるようにする試みc
です。
union {
int i;
char c[sizeof(int)];
};
これは良いアイデアのように思えますが、 のアラインメント要件char
がint
.
言い換えれば、char
16 で整列する必要がある 1 バイト (定義上は 1 バイトです。以下を参照) と4 バイト境界で整列する必要がある 4 バイトの int を持つことは可能ですか? -バイト境界?
そして、これは上記のユニオンの使用を詰まらせるでしょうか?
注意すべきことが2つあります。
ここで私が話しているのは、ここで標準が許可しているものについて具体的に話しているのであって、健全な実装者/アーキテクチャが提供するものではありません。
ISO C の意味で「バイト」という用語を使用しています。これは a の幅であり
char
、必ずしも 8 ビットではありません。