Есть ли четкое различие между стандартными файлами заголовков C *.h
, предоставляемыми компилятором C, и теми, которые предоставляются стандартной библиотекой C? Есть ли какой-то список или какие-то стандартные места?
Мотивация: int этот ответ Я получил некоторое время назад, относительно отсутствующего unistd.h
в последнем компиляторе TinyC, автор утверждал, что unistd.h
(в отличие от sys/unistd.h
) не должен быть предоставлен компилятором, но вашей библиотекой C.
Я не мог понять этот ответ (во-первых, разве это не должно относиться, скажем, к stdio.h
?), но я все еще думаю об этом. Это правильно? Где какая-то авторитетная ссылка на это?
Глядя на другие компиляторы, я вижу, что другие "автономные" компиляторы POSIX C, размещенные в Windows (например, инструментальная цепочка GCC, которая поставляется с MinGW в нескольких воплощениях; или компилятор Digital Mars), включают все файлы заголовков.
И в стандартном дистрибутиве Linux (скажем, Centos 5.10) я вижу, что пакет gcc
предоставляет несколько файлов заголовков (например, stdbool.h
, syslimits.h
) в /usr/lib/gcc/i386-redhat-linux/4.1.1/include/
, а пакет glibc-headers
предоставляет большинство заголовков в /usr/include/
(включая stdio.h
, /usr/include/unistd.h
и /usr/include/sys/unistd.h
).
Так что ни в том, ни в другом случае я не вижу поддержки вышеуказанному утверждению.