我想要一个位压缩结构中的数组。我静态地知道数组的大小 (32),并且我希望数组中的每个元素都是一位。例如,我希望能够这样说:
struct example_s {
// ...
unsigned int flags[32] : 32;
} __attribute__((__packed__));
我已经尝试了几件事,但 gcc 不会让步。如果能做到这一点就好了,这样我就可以编写干净的代码来遍历打包数组中的元素。想法?
最佳答案
如果您只是将它放入一个(32 位)int 中,那么您可以像这样使用 for 循环干净地迭代这些位:
for (bit = 0; bit < 32; bit++)
flagValue = ((flags & (1<<bit)) != 0;
并不比数组索引语法更难编写。
如果您希望隐藏位运算以使代码更具可读性,您甚至可以使用函数或宏来访问这些位 - 例如GetFlag(位)
关于c - 位压缩结构中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4299338/