Я давно знал, что в C есть бит-поля, а иногда я использую их для определения плотно упакованных структур:
typedef struct Message_s {
unsigned int flag : 1;
unsigned int channel : 4;
unsigned int signal : 11;
} Message;
Когда я читаю открытый исходный код, вместо этого я часто нахожу бит-маски и операции смены битов для хранения и извлечения такой информации в ручных бит-полях. Это настолько распространено, что я не думаю, что авторы не знали о синтаксисе битового поля, поэтому я задаюсь вопросом, есть ли причины перебрасывать бит-поля с помощью бит-масок и выполнять операции переключения самостоятельно, вместо того чтобы полагаться на компилятор для генерации код для получения и установки таких битовых полей.