#include <iostream>
struct S {
// will usually occupy 2 bytes:
// 3 bits: value of b1
// 2 bits: unused
// 6 bits: value of b2
// 2 bits: value of b3
// 3 bits: unused
unsigned char b1 : 3;
unsigned char : 2; // How do you reference these?
unsigned char b2 : 6, b3 : 2;
};
int main()
{
std::cout << sizeof(S) << '\n'; // usually prints 2
}
I2luY2x1ZGUgPGlvc3RyZWFtPgpzdHJ1Y3QgUyB7CiAgICAvLyB3aWxsIHVzdWFsbHkgb2NjdXB5IDIgYnl0ZXM6CiAgICAvLyAzIGJpdHM6IHZhbHVlIG9mIGIxCiAgICAvLyAyIGJpdHM6IHVudXNlZAogICAgLy8gNiBiaXRzOiB2YWx1ZSBvZiBiMgogICAgLy8gMiBiaXRzOiB2YWx1ZSBvZiBiMwogICAgLy8gMyBiaXRzOiB1bnVzZWQKICAgIHVuc2lnbmVkIGNoYXIgYjEgOiAzOwogICAgdW5zaWduZWQgY2hhciA6IDI7IC8vIEhvdyBkbyB5b3UgcmVmZXJlbmNlIHRoZXNlPwogICAgdW5zaWduZWQgY2hhciBiMiA6IDYsIGIzIDogMjsKfTsKaW50IG1haW4oKQp7CiAgICBzdGQ6OmNvdXQgPDwgc2l6ZW9mKFMpIDw8ICdcbic7IC8vIHVzdWFsbHkgcHJpbnRzIDIKfQ==