I'd like to have an array inside of a bit-packed struct. I statically know the size of the array (32), and I'd like each element in the array to be a single bit. For example, I would like to be able to say something like:
struct example_s {
// ...
unsigned int flags[32] : 32;
} __attribute__((__packed__));
I've tried a couple things, but gcc won't budge. It would be nice to be able to do this so that I could write clean code that iterated over the elements in the packed array. Ideas?
If you simply put it into a (32-bit) int, then you can cleanly iterate over the bits with a for loop like this:
for (bit = 0; bit < 32; bit++)
flagValue = ((flags & (1<<bit)) != 0;
Not much harder to write than an array indexing syntax.
If you wish to hide the bit-twiddling to make the code more readable you could even use a function or macro to access the bits - e.g. GetFlag(bit)