Есть несколько вариантов использования битовых полей даже на современных машинах.
Во-первых, когда вы обрабатываете логику уровня регистра. Это обычное дело, когда вы устанавливаете режимы и то, как работают определенные части оборудования. Это еще более распространено на встроенных устройствах. Например, на устройствах Arduino логика «PinMode» в основном устанавливает отдельные биты в высокий или низкий уровень, чтобы указать, находится ли цифровой вывод ввода-вывода в режиме «ввод» или «выход».
http://arduino.cc/en/Reference/pinMode
Во-вторых, при написании оптимизированного встроенного ассемблерного кода в программе на C/C++. Бывают случаи, когда вы хотите воспользоваться аппаратно-оптимизированными инструкциями, чтобы максимально ускорить выполнение вашей программы:
http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html
Последний распространенный пример — написание пакетных драйверов или реализация определенных протоколов. Недавно я только что опубликовал вопрос по этому поводу, где оказалось, что я использовал 32-битную переменную вместо 8-битной переменной, состоящей из битовых полей, что приводило к поломке моего кода:
Базовый клиент NTP в Windows в Visual C++
Итак, вкратце: при разговоре напрямую с оборудованием или в сетевом коде.
person
Cloud
schedule
03.01.2014
bool
, но с битовыми полями они будут занимать только 1 байт. - person dtech   schedule 03.01.2014