簡短版本是:如何學習C++字段的單個字段的大小(以位爲單位)?從C++ struct字段獲取單個字段的大小
爲了澄清,該領域的一個例子,我是說:
struct Test {
unsigned field1 : 4; // takes up 4 bits
unsigned field2 : 8; // 8 bits
unsigned field3 : 1; // 1 bit
unsigned field4 : 3; // 3 bits
unsigned field5 : 16; // 16 more to make it a 32 bit struct
int normal_member; // normal struct variable member, 4 bytes on my system
};
Test t;
t.field1 = 1;
t.field2 = 5;
// etc.
爲了讓整個測試對象的大小很容易,我們只說
sizeof(Test); // returns 8, for 8 bytes total size
我們可以得到一個正常的結構成員通過
sizeof(((Test*)0)->normal_member); // returns 4 (on my system)
我想知道如何獲得單個字段的大小,說測試::字段4。以上正常結構成員的示例不起作用。有任何想法嗎?或者有人知道它無法工作的原因?我相當確信sizeof不會有幫助,因爲它只返回字節大小,但如果有人知道,否則我都是耳朵。
謝謝!
我想你可能會被嘲笑,但我想證明是錯誤的。 – 2009-02-11 23:02:33
我想借此機會繼續我對位域的討伐 - 只是不要使用它們: http://stackoverflow.com/questions/289900/why-this-unions-size-is-2-with- bitfields/290855#290855 – 2009-02-11 23:34:52