例如,在新的C11标准中添加了stdalign.h
和threads.h
。为什么不是stdthreads.h
或align.h
呢?它是为了避免与现有的库和系统头发生冲突吗?
发布于 2012-12-13 12:41:14
在不同的时期,选择这个名字有不同的原因。早在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的基本原理还没有完成;当它可用时,它可能会透露更多信息。
https://stackoverflow.com/questions/13852988
复制相似问题