исправлено 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», если значение не используется вообще?
Спасибо,