В обосновании POSIX есть примечание о том, что указание CHAR_BIT равно 8, было концессией, необходимой для поддержания выравнивания с C99, не выбрасывая сокеты/сети, но я никогда не видел объяснения того, что именно было в конфликте. Есть ли у кого-нибудь анекдоты или цитаты из-за того, почему это было сочтено необходимым?
Изменить: У меня появилось много спекулятивных ответов о том, почему желательно, чтобы CHAR_BIT
было 8, и я согласен, но то, что я действительно ищу, - это технический конфликт между C99 и сетевым материалом в POSIX. Лучше всего предположить, что он имеет какое-то отношение к C99, требующему, чтобы uint*_t
были типами точного размера (без заполнения), тогда как inttypes.h
ранее в POSIX не выполнял такого требования.