标准::uint8_t的基础类型

Underlying type for std::uint8_t

本文关键字:类型 uint8 标准      更新时间:2023-10-16

问题
是否有任何 c++ 工具链,其中存在std::uint8_t,但不是 unsigned char 的 typedef(或 char,如果它是无符号的(?

编辑:相反:在符合标准的实施中,这样的事情甚至可能吗?

背景/动机
我主要是问,因为我想知道std::uint8_t*是否可以便携式地用于访问单个字节(就像unsigned char*一样(。是的,我知道std::byte,但这在这里无关紧要。我主要对x86,arm和mips的工具链感兴趣,但出于好奇,我也想听听其他例子。

  1. char不是无符号整数类型,即使它实际上是无符号的。由于uint8_t必须是无符号整数类型,因此永远无法char
  2. CHAR_BIT必须至少为 8,而下一个最小的标准无符号整数类型 unsigned short 必须至少具有 16 位。如果uint8_t存在,则它必须是"宽度为 8 且没有填充位的无符号整数类型"。如果uint8_t表示标准的无符号整数类型,则只能unsigned char
  3. 但是,措辞中的任何内容都不会阻止uint8_t表示实现定义的扩展无符号整数类型。但是,我不知道有任何实现可以做到这一点。