Я пытаюсь скомпилировать следующий код:
union Bool { bool b[8] : 8; // (1) bool b0,b1,b2,b3,b4,b5,b6,b7 : 1; };
Однако строка (1) не компилируется, какой синтаксис для битового выравнивания массива?
Вы не можете объявить массив битов в C.
Концепция массива основана на указателе, и вы можете иметь только указатели на байты, а не на отдельные биты в байте.Битовые поля C позволяют упаковать целочисленные компоненты в меньший объем памяти, чем компилятор по умолчанию.Массив не является целым числом, поэтому вы не можете упаковать массив в битовое поле.Если вы хотите прочитать о стандарте, вы можете найти его в ISO / IEC 9899 - Языки программирования - C (см. §6.7.2.1).
Если вам нужна скорость,вы можете использовать объединение массива bools, а если вам нужен компактный объем памяти, вы можете определить макросы для более удобного доступа к вашим битовым полям.