現在我有一個結構看起來像這樣:指定數組元素的位大小在結構
struct Struct {
uint8_t val1 : 2;
uint8_t val2 : 2;
uint8_t val3 : 2;
uint8_t val4 : 2;
} __attribute__((packed));
有沒有辦法讓所有的val
是個單一的陣列?重點不是佔用空間,而是所有值的位置:我需要它們在內存中沒有填充,並且每個佔用2位。有數組並不重要,有索引的簡單訪問的任何其他數據結構都可以,並且無論它是純C還是C++都無關緊要。讀/寫性能很重要 - 它應該與簡單位操作相同(類似於),現在用於索引訪問。
更新:
正是我想要的,可謂
struct Struct {
uint8_t val[4] : 2;
} __attribute__((packed));
我刪除了我的答案(結構數組),因爲它不符合您的主要條件之一:_讀/寫性能很重要 - 它應該與簡單位操作相同(類似於),現在用於索引訪問_結構數組不會爲該結構的數組元素提供連續的內存位置,並且會降低讀/寫性能。到目前爲止,我相信MadScienceDreams(雖然是一個奇怪的綽號:)提供了最符合您的既定目標的概念。 – ryyker