#pragma pack(1) struct S { char c:1; char d:1 __attribute__((aligned(2))); char e:1; }; _Static_assert(sizeof(struct S) == 1, "wrong size");
MSVC does things simply, gcc does not