brintos

brintos / llvm-project-archived public Read only

0
0
Text · 771 B · 5705cfb Raw
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