我想知道爲什麼位域可以與工會/結構一起工作,但不能和像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