例如,在新的C11标准中,添加了stdalign.h
和threads.h
。为什么不使用stdthreads.h
或align.h
?这是为了避免与现有库和系统头文件发生冲突吗?
<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
前缀,我猜测是因为有一些先前的艺术作品没有实质性地改变。据我所知,C2011理由尚未完成;当其可用时,可能会揭示更多信息。