我只是想知道为什么像uintptr_t
are in这样的东西stdint.h
,但其他类型像size_t
are in stddef.h
?这些标题背后有逻辑吗?
问问题
1475 次
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 回答