最近我遇到了以下代码片段,它试图确保i
(nad no more) 的所有字节都可以作为 的单个元素访问c
:
union {
int i;
char c[sizeof(int)];
};
现在这似乎是个好主意,但我想知道标准是否允许对齐要求char
比int
.
换句话说,是否有可能有一个需要在四字节边界上对齐的四字节 int 和需要char
在十六进制上对齐的一字节(根据定义,它是一个字节,见下文) -字节边界?
这是否会影响上述联合的使用?
有两点需要注意。
我在这里专门谈论标准允许的内容,而不是理智的实施者/架构将提供的内容。
我在 ISO C 意义上使用术语“字节”,它是 a 的宽度
char
,不一定是 8 位。