Hello to everyone, i have this example:
union { struct { unsigned char x:4; unsigned char y:4; } nibble; unsigned char abyte; } value;
I'am not sure how to acces to the byte and the two nibble's. I tried several hours, maybe there's a mistake in my textbook? Or there is a fatal error in my understanding of struct and union's!
There's an really idioticall way to solve this: Just toggling thru all permutations of syntax :-( No, better to ask someone who knows and is willing to help :-)
"By the way, that's what the compiler actually does to implement bit fields."
In addition to that, if you specify a boolean op and a shift op, the ARM compiler will most likely generate a single machine instruction to perform the bitfield set/clear.
There is one advantage of using bitfields instead of low-level bit-shift-and-mask though: clarity of code and intention of the programmer.
As long as you don't assume any physical mapping of the struct to the underlying storage, you can safely rely on the integer promotions of the bitfield to int, i.e., if you have a bitfield of 3 bits, you can safely use its value as a word-extended value to int in a expression.