43 lines · cpp
1#include <cstdint>2 3int main(int argc, char **argv) {4 enum BitFieldEnum : uint32_t { kZero, kOne };5 6 struct BitFieldStruct {7 uint16_t a : 10;8 uint32_t b : 4;9 bool c : 1;10 bool d : 1;11 int32_t e : 32;12 uint32_t f : 32;13 uint32_t g : 31;14 uint64_t h : 31;15 uint64_t i : 33;16 BitFieldEnum j : 10;17 };18 19 BitFieldStruct bf;20 bf.a = 0b1111111111;21 bf.b = 0b1001;22 bf.c = 0b0;23 bf.d = 0b1;24 bf.e = 0b1;25 bf.f = 0b1;26 bf.g = 0b1;27 bf.h = 0b1;28 bf.i = 0b1;29 bf.j = BitFieldEnum::kOne;30 31 struct AlignedBitFieldStruct {32 uint16_t a : 10;33 uint8_t b : 4;34 unsigned char : 0;35 uint16_t c : 2;36 };37 38 uint32_t data = ~0;39 AlignedBitFieldStruct abf = (AlignedBitFieldStruct &)data;40 41 return 0; // Set a breakpoint here42}43