【发布时间】:2014-08-02 23:13:03
【问题描述】:
C 编译器提供的标准 C *.h 头文件与标准 C 库提供的头文件之间是否有明确的区别?是否有一些列表或一些标准位置?
动机:int this answer 前段时间,关于最新的TinyC compiler中缺少unistd.h,作者认为unistd.h(与sys/unistd.h相反)不应该由编译器提供,而是由您的 C 库提供。
我无法理解这种反应(一方面,这不应该也适用于stdio.h 吗?)但我仍然想知道它。那是对的吗?这方面的权威参考在哪里?
查看其他编译器,我发现托管在 Windows 中的其他“自包含”POSIX C 编译器(例如 MinGW 附带的 GCC 工具链,有几个化身;或 Digital Mars 编译器)包含所有头文件。
在标准的 Linux 发行版(比如 Centos 5.10)中,我看到 gcc 包在 /usr/lib/gcc/i386-redhat-linux/4.1.1/include/ 和 glibc-headers 包中提供了一些头文件(例如,stdbool.h、syslimits.h)提供/usr/include/ 中的大部分标头(包括stdio.h、/usr/include/unistd.h 和 /usr/include/sys/unistd.h)。
因此,在这两种情况下,我都认为上述说法得到了支持。
【问题讨论】:
标签: c gcc header-files standard-library