为什么一些C标准头文件以'std'开头,而其他的不是呢?

19

例如,在新的C11标准中,添加了stdalign.hthreads.h。为什么不使用stdthreads.halign.h?这是为了避免与现有库和系统头文件发生冲突吗?


好问题,所以加1分。 - Shantanu Banerjee
1个回答

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前缀,我猜测是因为有一些先前的艺术作品没有实质性地改变。据我所知,C2011理由尚未完成;当其可用时,可能会揭示更多信息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接