我想知道为什么位域可以与工会/结构一起工作,但不能和像int
或short
这样的正常变量一起工作。
这工作:为什么正常变量不允许位域?
struct foo {
int bar : 10;
};
但这种失败:
int bar : 10; // "Expected ';' at end of declaration"
为什么这个功能仅在工会/结构,而不是与变量可用?技术不一样吗?
编辑:
如果将允许你能与例如3个字节的变量,而不每次使用结构/联合成员。这是我如何与一个结构:
struct int24_t {
int x : 24 __attribute__((packed));
};
struct int24_t var; // sizeof(var) is now 3
// access the value would be easier:
var.x = 123;
呃,因为它没有意义。 – 2012-12-19 18:13:56
@ H2CO3这并不能帮助回答这个问题。你想说明为什么它在一个案件中是有道理的,但不是另一个案件中的道理? (我相信你有理由发表你的评论,我只是想知道它是什么。) –
@ap。当然。位域用于在结构的成员之间分割/共享位。如果只有一个变量,并且没有(连续的)字段(在结构中),这是不合理的/有意义的。 – 2012-12-19 18:16:56