例如,在新的C11标准中增加了stdalign.h
和threads.h
。为什么不是 stdthreads.h
或 align.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/