我只是想知道为什么%d/%m/%Y
之类的内容在https://alvinalexander.com/scala/iterating-scala-lists-foreach-for-comprehension中,而uintptr_t
之类的其他类型在stdint.h
中?这些标题背后有逻辑吗?
答案 0 :(得分:2)
推理在很大程度上取决于惯例和历史。
<stddef.h>
和size_t
至少出现在1989年的ANSI标准C(1978年的书 The C Programming Language 中没有提到标题或{{1} }}和size_t
表达式的类型为sizeof
- 这在生态系统中是有意义的,其中处理器的自然字大小也是系统上地址和索引的大小)
int
和<inttypes.h>
添加到标准C中,并在C99 Rationale中解释了它们的存在。
<stdint.h>
派生自几个现有64位系统上的同名标头。委员会讨论了规定整数大小和其他特征的其他方法,但最终决定将现有做法标准化,而不是在这方面进行创新。 ...<inttypes.h>
是<stdint.h>
的一个子集,更适合在独立环境中使用,可能不支持格式化的I / O功能。在托管环境中,如果不需要格式化的转换目标,则使用此标头而不是<inttypes.h>
可以避免定义如此大量的宏。