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

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

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

#include <stdio.h>
#include <limits.h>

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

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

Спасибо,

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

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