исправлено CHAR_BIT в разных системах?

Я запутался в CHAR_BIT в пределах. Я прочитал несколько статей о том, что макрос CHAR_BIT предназначен для переносимости. Это разумно, если использовать макрос, а не магическое число, например 8. Но пределы .h от glibc-заголовков, и этоЗначение s фиксируется как 8. Если glibc-headers установлен в системе, в которой байт имеет более 8 бит (скажем, 16 бит), это неправильно при компиляции? А 'символ» назначено 8 бит или 16 бит?

И когда я изменил CHAR_BIT на 9 в limit.h, следующий код все еще печатает '8', как?

#include 
#include 

int
main(int argc, char **argv)
{
    printf("%d\n", CHAR_BIT);
    return 0;
}

Следующее является дополнительным: япрочитал все ответы так, но все еще не ясно. На практике,#include  и использовать CHAR_BIT, я могу подчиниться этому. Но это'Это другая вещь. Здесь я хочу знать, почему это так, во-первых, это фиксированное значение «8» в glibc /usr/include/limits.h, что происходит, когда те системы, которые имеют 1 байт! = 8 бит, установлены с glibc; Затем я нашел значение «8» это даже не реальное значение, которое использует код, поэтому «8» ничего не значит там? Зачем ставить «8» там если значение вообще не используется?

Спасибо,

Ответы на вопрос(3)

Ваш ответ на вопрос