I don't have any platform with
CHAR_BIT > 8
#define CHAR_BIT 16 /* number of bits in a char */
#define SCHAR_MIN (-32768) /* minimum signed char value */
#define SCHAR_MAX 32767 /* maximum signed char value */
#define UCHAR_MAX 0xffff /* maximum unsigned char value */
limits.h is not a configuration file for your compiler; it is a mechanism via which the implementation provides information to you. Your compiler knows that
char has 8 bits and that
unsigned char; it doesn't need to read the
limits.h file to find that out.
If you want a car analogy, hammering a nail through your fuel gauge won't prevent you from running the tank dry.