简短的版本是:如何学习 c++ 字段的单个字段的大小(以位为单位)?
为了澄清,我正在谈论的领域的一个例子:
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.
要获得整个 Test 对象的大小很容易,我们只是说
sizeof(Test); // returns 8, for 8 bytes total size
我们可以通过
sizeof(((Test*)0)->normal_member); // returns 4 (on my system)
我想知道如何获取单个字段的大小,例如 Test::field4。上面的普通结构成员示例不起作用。有任何想法吗?或者有人知道它不能工作的原因吗?我相当确信 sizeof 不会有帮助,因为它只返回以字节为单位的大小,但如果有人知道否则我会全神贯注。
谢谢!