Some compilers e.g. CodeVision allow bit data types. CodeVision is smart in that you can also specify a set of registers that the bit variables will be placed in so it can use bit set and bit clear instructions while at the same time packing 8 bit vaiables into each byte wide register.
WinAVR has a bool data type, but will it:
a) pack these into bytes, and if it does will it
b) guarantee atomic operation on each bit (i.e. do you need to explictly disable and re-enable interrupts to prevent other bits in the same from being mangled if an ISR happens to fire while a bit is being modified)?
Or does it always use a full byte for each bool bit?
Also can you use the register modifier to force these (packed?) bits into registers?