I am writing a C program. I want a variable that I can access as a char but I can also access the specific bits of. I was thinking I could use a union like this...
typedef union
{
unsigned char status;
bit bits[8];
}DeviceStatus;
but the compiler doesn't like this. Apparently you can't use bits in a structure. So what can I do instead?
Sure, but you actually want to use a struct to define the bits like this
typedef union
{
struct
{
unsigned char bit1 : 1;
unsigned char bit2 : 1;
unsigned char bit3 : 1;
unsigned char bit4 : 1;
unsigned char bit5 : 1;
unsigned char bit6 : 1;
unsigned char bit7 : 1;
unsigned char bit8 : 1;
}u;
unsigned char status;
}DeviceStatus;
Then you can access for DeviceStatus ds;
you can access ds.u.bit1
. Also, some compilers will actually allow you to have anonymous structures within a union, such that you can just access ds.bit1
if you ommit the u from the typedef.