GCC 编译器的一个字节有多少位

Ujj*_*wal 4 c++ gcc

根据 C++ 规范

一个字节至少足以包含基本执行字符集 (2.3) 的任何成员和 Unicode UTF-8 编码形式的八位代码单元,并且由连续的位序列组成,其数量为实现定义。

这意味着,一个字节中的位数必须是 8 位或多于 8 位。

现在,根据 gcc,位数由 ABI 确定。

https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gcc/Characters-implementation.html#Characters-implementation

4.4 字符

一个字节中的位数(C90 3.4、C99 和 C11 3.6)。

由 ABI 确定

GCC 基于 ABI - http://itanium-cxx-abi.github.io/cxx-abi/

任何人都可以指出我提到字节中位数的位置吗?

JMA*_*MAA 5

C ++标准(因此大多数编译器)仅有效地保证一个char至少8点连续的位。对于任何特定编译,实际位数取决于目标 CPU 架构。

但是,在大多数情况下,您必须非常努力地找到没有 8 位字节的目标 CPU。

如果您必须编写依赖于 8 位字节假设的代码,那么您始终static_assert(CHAR_BIT == 8)可以防止任何违反您假设的编译。