c - 为什么有些 C 标准头文件以 'std' 开头,而有些则不是?

标签 c c99 c89 c11

例如,在新的C11标准中增加了stdalign.hthreads.h。为什么不是 stdthreads.halign.h?是为了避免与现有库和系统头文件发生冲突吗?

最佳答案

在不同时期,选择名称的原因各不相同。 <stdio.h>早在有 C 标准之前就被用作名称;该标准只是对现有做法进行了标准化。 <stddef.h> header 是原 (C89) 委员会的发明;之所以选择它的名字是因为它没有被使用。与 <stdlib.h> 类似.姓名<inttypes.h>是现有的做法,但委员会需要<stdint.h>服务于独立的实现。姓名<stdarg.h>被选择与非原型(prototype)等效 <varargs.h> 平行.姓名<stdbool.h>未使用;同样,我猜,<stdatomic.h> , <stdalign.h> , <stdnoreturn.h> . std前缀在很大程度上是为标准保留的(但我使用标题 "stderr.h" ,知道我可能会如履薄冰)。至于为什么<uchar.h><threads.h>没有以 std 结尾前缀,我假设一些基本没有变化的现有技术。 AFAIK,C2011 基本原理尚未完成;它可能会在可用时透露更多信息。

关于c - 为什么有些 C 标准头文件以 'std' 开头,而有些则不是?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13852988/

相关文章:

c - C 中的奇怪错误

c - 静态断言 enum 是某种基础类型

c - 可以使用 ANSI - C 脚本编写 Web 应用程序吗?

c - 只计算一次宏参数

c - 是否可以将一种类型的位域转换为具有相同总位数的另一种类型的位域?

c - 正确使用 volatile sig_atomic_t

c - 从编码的哈希值中导出 Argon2 类型是否安全?

c - 一些由clang生成的程序集不能在实模式下工作(.COM,微小内存模型)

c - C99 中数据结构的效率(可能受字节序影响)

c - 使用aarch64 linux android clang的ARMv8架构的内联函数交叉编译问题