Теперь у меня есть структура вида:Определение размера битых элементов массива в структурах
struct Struct {
uint8_t val1 : 2;
uint8_t val2 : 2;
uint8_t val3 : 2;
uint8_t val4 : 2;
} __attribute__((packed));
Есть ли способ, чтобы сделать все val
S один массивом? Точка не занимает пространство, а местоположение всех значений: мне нужно, чтобы они были в памяти без заполнения, и каждый из них занимал 2 бита. Не важно иметь массив, любая другая структура данных с простым доступом по индексу будет в порядке, и не имеет значения, является ли это просто C или C++. Производительность чтения/записи важна - она должна быть такой же (аналогичной), как и простые битовые операции, которые теперь используются для индексированного доступа.
Update:
То, что я хочу точно можно охарактеризовать как
struct Struct {
uint8_t val[4] : 2;
} __attribute__((packed));
Я удалил свой ответ (массив структур), потому что он не соответствовал одному из ваших основных критериев: важна производительность записи/записи - она должна быть такой же (похожей на), как и простые битовые операции, которые теперь используются для индексированного доступа_ Массив структуры не обеспечивал бы смежных мест памяти для элементов массива этой структуры, что ухудшало бы производительность чтения/записи. До сих пор я полагаю, что MadScienceDreams (хотя странный прозвище :) предложил концепцию, наиболее точно соответствующую вашей заявленной цели. – ryyker