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