however, i found out that using this struct may not always optimize your RAM..
reason: the issue of memory alignment... this quite depends on your microcontroller and your compiler..
I know that in win programing when you have signed char program allocates 2 bytes, only unsigned char uses one byte, so, when you write char posibly compiler can allocate whole byte and just use few bits that you define inside this byte.
Compilers usually try to pack several bit fields into one word, but they usually don't try to pack several structs into one word. Try doing something like this:
yuh,
quite compiler and microcontroller dependent...,
i guess to use memory in such efficient and "packed" way (i.e. use every bit and not waste any), we have to come up with very carefully-coded mem management stuff..