【发布时间】:2012-04-04 22:58:06
【问题描述】:
谁能告诉我为什么断言失败?
仅供参考:我在 64 位 linux 机器上使用 gcc 4.6.1 进行编译。
typedef union cpu_register {
uint64 _64;
uint32 _32;
uint16 _16;
uint16 _8l : 8,
_8h : 8;
} __attribute__((packed)) cpu_register;
int main()
{
cpu_register reg;
reg._64 = 1;
assert(reg._8h != reg._8l);
return 0;
}
reg._8h 的预期值为 0,但与 reg._8l (== 1) 的值相同。
我找到了解决这个问题的方法,但我想知道哪里出了问题?
【问题讨论】:
-
请在您的问题中添加语言标签 (C?),它会帮助人们找到您的问题并提供正确的解决方案。
-
是的,它的 C 语言,抱歉这是我的第一篇文章,所以我错过了。
标签: c gcc assert bit-fields unions