例如,在新的C11标准中添加了stdalign.h
和threads.h
。为什么不stdthreads.h
或align.h
?是否要避免与现有库和系统头冲突?
答案 0 :(得分:13)
在不同的时间,选择名称的原因有很多。早在有C标准之前,<stdio.h>
就被用作名称;标准简单地标准化现有的做法。 <stddef.h>
标题是原始(C89)委员会的发明;选择它的名字是因为它没有被使用。与<stdlib.h>
类似。名称<inttypes.h>
是现有做法,但委员会需要<stdint.h>
来提供独立的实施。选择名称<stdarg.h>
以与非原型等效<varargs.h>
并行。名称<stdbool.h>
未使用;同样,我猜,<stdatomic.h>
,<stdalign.h>
,<stdnoreturn.h>
。 std
前缀主要是为标准保留的(但是我使用标题"stderr.h"
,因为我知道我可以在薄冰上行走)。至于为什么<uchar.h>
和<threads.h>
没有以std
前缀结尾,我假设一些基本上没有变化的现有技术。 AFAIK,C2011理由尚未完成;它可能会在可用时显示更多信息。