Мне нужно использовать 6-байтовое (48-битное) битовое поле в структуре, которую я могу использовать как целое число без знака для сравнения и т. д. Что-то вроде следующего:
pack (1)
struct my_struct {
_int64 var1:48;
} s;
if (s.var >= 0xaabbccddee) { // do something }
Но почему-то в 64-битной Windows sizeof
эта структура всегда возвращает 8 байтов вместо 6 байтов. Любые указатели приветствуются?
_int64
, напримерint
? Компилятор имеет право решать, должна ли структура быть выровнена по 4 или 8 байтам (а не по 2 байтам). Упаковка — это просто подсказка компилятору. - person Jonathan Leffler   schedule 06.03.2012