VO
Size: a a a
VO
IA
IZ
VO
АК
sizeof(S)
, не запуская программуVO
АК
sizeof(S) == 2
sizeof(S) == 5
VO
VO
sizeof(S) == 2
sizeof(S) == 5
АК
#pragma pack(push, 1)
struct S
{
int a : 8;
bool b : 1;
};
#pragma pack(pop)
sizeof(S) == 2
У msvc 19: sizeof(S) == 5
VO
АК
[aaaaaaaa; b.......]
[aaaaaaaa; ........; ........; ........; b.......]
VO
IZ
АК
bool f(S s) {clang:
return s.b;
}
mov eax, edi(забрал нулевой бит 1-го байта)
shr eax, 8
and eax, 1
ret
movzx eax, BYTE PTR [rcx+4](забрал нулевой бит 4-го байта)
and al, 1
ret 0
АК
[aaaaaaaa; b.......]
[aaaaaaaa; ........; ........; ........; b.......]
SS
YB
YB
FS