2

我只是想知道为什么像uintptr_tare in这样的东西stdint.h,但其他类型像size_tare in stddef.h?这些标题背后有逻辑吗?

4

1 回答 1

3

推理在很大程度上是惯例和历史问题。

<stddef.h>并且size_t至少从 1989 年的 C ANSI 标准(1978 年的书The C Programming Language没有提到标题或size_t, 并且sizeof表达式有类型int- 这在处理器的“自然字长”也是系统上地址和索引的大小)。

<inttypes.h>并被<stdint.h>添加到 1999 年修订的标准 C 中,并且它们的存在在C99 基本原理中进行了解释。

<inttypes.h>源自几个现有 64 位系统上的同名标头。委员会讨论了指定整数大小和其他特征的其他方法,但最终决定标准化现有实践而不是在该领域进行创新。...<stdint.h><inttypes.h>更适合在独立环境中使用的子集,它可能不支持格式化的 I/O 功能。在托管环境中,如果不需要格式化的转换目标,则使用此标头而不是<inttypes.h>避免定义如此大量的宏。

于 2018-06-17T03:42:56.397 回答