为什么有些C标准头文件以'std'开头,而有些则没有?

时间:2012-12-13 04:31:49

标签: c c99 c89 c11

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

1 个答案:

答案 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理由尚未完成;它可能会在可用时显示更多信息。