Я попытался использовать битовые поля в структуре для некоторых значений, которым нужен только один или два бита вместо целого байта.Как добавить массив в структуру битового поля?
Мой код:
struct s_rdata {
signed int p0:28;
signed int p1:28;
signed int p2:28;
unsigned int d0:17;
unsigned int d1:17;
unsigned int d2:17;
unsigned char data1:1;
unsigned char data2:1;
} rdata;
Таким образом, вы можете видеть, что есть переменные с именем p0
- p2
, d0
- d2
и data1
- data2
.
Теперь я хотел бы иметь их в массиве. Тем не менее, ни одна из этих линий не делает работу:
signed int p[3]:28;
signed int p:28[3];
не Могу ли я добавить массив в список битового, массив signed int
только нуждающийся в 28 бит на запись?
Будет *** [прагма-пакет] (https://msdn.microsoft.com/en-us/library/Aa273913%28v=VS.60%29.aspx) *** инструкции помогают с неэффективностью пространства, если переход со структурными массивами? – ryyker
@ryyker, может быть. Сведения об эффектах '#pragma pack' специфичны для реализации.В тех случаях, когда это вообще имеет какой-либо эффект, конкретные виды использования могут или не могут помешать компилятору выложить структуры с внутренним или конечным дополнением за счет возможного смещения членов. Если вы не пытаетесь сопоставить тип 'struct' с конкретным, определяемым извне шаблоном данных, обычно лучше просто выложить элементы вручную с самого большого требования к выравниванию до наименьшего; это обычно избегает ввода внутренней прокладки, но все равно может быть завершающее дополнение. –