почему везде упоминается, что в качестве "типа" для битовых полей
должно использоваться int, а вот это компилятор съел:
struct s_byte
{
BYTE bit1:1;
BYTE bit2:1;
BYTE bit3:1;
BYTE bit4:1;
BYTE bit5:1;
BYTE bit6:1;
BYTE bit7:1;
BYTE bit8:1;
};
причём sizeof показывает 1 байт , а не 4 (как если бы компилятор сделал его int принудительно)
ещё больше смущает такая штука:
struct s_pole64
{
unsigned __int64 b1:16;
unsigned __int64 b2:16;
unsigned __int64 b3:16;
unsigned __int64 b4:16;
//unsigned __int64 b5:1; // 65-й бит !
};
- тоже прокатывает, причём sizeof показывает 64 бита (8 байт) , а если разремарить
65-й бит - то sizeof показывает 128 битов
вопрос: не нарушаются ли стандарты? Больно уж красиво всё получается