uint8_t - 8位保证

nig*_*ils 1 c++

如何以及在哪里保证a uint8_t是8位?

深入研究N3242 - "工作草案,编程语言C++标准",第18.4.1节<cstdint>概要说 -

       `typedef unsigned integer type uint8_t; // optional`
Run Code Online (Sandbox Code Playgroud)

因此,实质上,根本不需要定义符合C++标准的库uint8_t.

更新:可能只是问,标准的哪一行说uintN_t类型是N位?

jus*_*tin 5

来自C++:

18.4.1标题简介

...标题定义了所有函数,类型和宏,与C标准中的7.18相同....

来自C:

7.20.1.1精确宽度整数类型

1 typedef名称intN_t指定带符号的整数类型,其宽度为N,无填充位和二进制补码表示.因此,int8_t表示这样的带符号整数类型,其宽度恰好为8位.

2 typedef名称uintN_t指定宽度为N且无填充位的无符号整数类型.因此,uint24_t表示这样的无符号整数类型,其宽度恰好为24位.

3这些类型是可选的.但是,如果实现提供宽度为8,16,32或64位的整数类型,没有填充位,并且(对于具有二进制补码表示的有符号类型),它应定义相应的typedef名称.


因此,实质上,根本不需要定义符合C++标准的库来定义uint8_t.

正确.正如Nikos所提到的那样(+1),当/如果typedef不存在/声明时,你只需要一个替代品.