Стандарт C ++ 17 несколько раз использует термин «единица выделения» в разделе 12.2.4 при обсуждении битовых полей, но, похоже, не определяет, что означает этот термин.Стандарт также гласит: «В качестве особого случая безымянное битовое поле с шириной нуля определяет выравнивание следующего битового поля на границе единицы выделения».
Итак, у меня есть два вопроса относительно этих концепцийс использованием приведенного ниже кода в качестве примера:
Что означает стандарт под термином «единица распределения»?
Какое значение имееттипа данных, указанного для безымянных битовых полей?
Во втором вопросе я предполагаю, что тип данных означает, что следующее битовое поле должно быть выровнено по следующей границе дляэтот тип данных.
struct tag
{
char X:3;
unsigned int :0; // start next bit-field on next unsigned int boundary?
char Y:4;
unsigned char :0; // start next bit-field on next unsigned char boundary?
long Z:32;
};