例如,在新的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
复制相似问题