短いバージョンは次のとおりです。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 はサイズをバイト単位で返すだけなので、役に立たないことはかなり確信していますが、それ以外のことを知っている人がいれば、私はすべて耳を傾けます。
ありがとう!