I'm considering a very specific (and nowadays useless) processor, called saturn.
One of the strange feature of this CPU is that its element unit is the nibble (4-bits), not the byte (8-bits). It's not just cosmetic, any pointer value is expressed in nibble.
There was one attempt at creating a C compiler for Saturn : hp48xgcc
Looking at its documentation, I noticed that its basic types follow the usual GCC convention, with char 8 bits. At this point, I wondered : Is it not the intention of CHAR_BIT to provide the size of the element unit ? This seems to be hinted by GCC own documentation :
You can compute the number of bits in any data type like this:
sizeof (type) * CHAR_BIT
In this case, considering the Saturn architecture, it would be better to have CHAR_BIT = 4
Or do I misunderstand the signification of CHAR_BIT ?