【发布时间】:2013-02-08 21:44:10
【问题描述】:
我试图将 512 个字节写为无符号字符,但将它们作为结构中的字段读取。下面是我想出的工会。
typedef union {
unsigned char buffer[512]; //512 bytes
struct {
unsigned char a[446];
struct part b[4]; //sizeof(part) = 16
unsigned char c[2];
}parsed; //446 + 4*16 + 2 = 512 bytes
}tbl;
我可以正确地写入缓冲区,但从 a 或 b 或 c 读取会给出 0。 - 我正在使用 gcc - 在 64 位 Linux 机器上 - 有/没有 -m32 标志没有区别。
有人可以阐明我所缺少的吗?
【问题讨论】:
-
填写
union字段并使用另一个字段是未定义的行为。
标签: c unions reinterpret-cast mbr type-punning