Битовые поля, почему конкретная реализация?

Похоже, что битовые поля C / C ++ находят широкое применение в драйверах аппаратного обеспечения и двоичных сетевых передачах. Однако они неОн, кажется, широко используется и обычно не рекомендуется, потому что фактическая двоичная компоновка зависит от реализации, как видно из этой цитаты из стандарта C99 6.7.2.1/10 - "Структура и объединение спецификаторов ";

Реализация может выделить любой адресуемый блок памяти, достаточно большой для хранения битового поля. Если остается достаточно места, битовое поле, которое следует сразу за другим битовым полем в структуре, должно быть упаковано в смежные биты той же единицы. Если остается недостаточно места, определяется ли битовое поле, которое не умещается, в следующем блоке или перекрывает смежные блоки, определяется реализацией. Порядок распределения битовых полей в блоке (от старшего к младшему или от младшего к старшему) определяется реализацией. Выравнивание адресуемой единицы хранения не определено.

Мой вопрос довольно прост; Почему комитет решил оставить битовые поля специфичными для реализации, и, таким образом, сделать это конструкцией компилятора, которая в основном может использоваться для уменьшения использования памяти, где 'Может ли он во многих случаях использоваться для создания хороших бинарных макетов и освободить разработчиков от бесполезного кода?

Ответы на вопрос(1)

Ваш ответ на вопрос