gpt4 book ai didi

c - 为什么 POSIX 要求 CHAR_BIT==8?

转载 作者:太空狗 更新时间:2023-10-29 16:22:52 25 4
gpt4 key购买 nike

在 POSIX 基本原理中有一个说明,强制 CHAR_BIT 为 8 是为了保持与 C99 的一致性而不丢弃套接字/网络所必需的让步,但我从来没有看到冲突到底是什么的解释。有没有人有轶事或引文说明为什么它被认为是必要的?

编辑:关于为什么希望 CHAR_BIT 为 8,我得到了很多推测性的答案,我同意,但我真正想要的是什么这就是 C99 和 POSIX 中的网络内容之间的技术冲突。我最好的猜测是它与 C99 有关,要求 uint*_t 是精确大小的类型(无填充),而 inttypes.h 以前在 POSIX 中没有这样的要求。

最佳答案

因为 ANSI 和 ISO 中的绝大多数标准(与通信相关)都使用八位字节(8 位值)进行交流。没有那种空洞的可变大小字符废话:-)

并且,由于相当多的 C 代码使用 charunsigned char 来存储和/或操作这些值,并假设它们是 8 位宽,事实上,ISO 允许可变大小会导致该代码出现问题。

请记住 ISO C 的首要目标之一 - 现有代码很重要,现有实现不重要。这就是为什么 limits.h 首先存在而不是仅仅假设特定值的原因之一,因为周围有其他假设的代码。

POSIX 也遵循相同的准则。通过规定 8 位的字节大小,他们防止了现实世界中已有的大量代码的破坏。

关于c - 为什么 POSIX 要求 CHAR_BIT==8?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6631491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com