Иногда я вижу заголовочные файлы формы.
#include <sys/sysinfo.h> // I found this on my system under /usr/include/sys/sysinfo.h. Is that all the "sys/" means?
Что является названным и почему эти заголовочные файлы, отличающиеся от большинства других как
#include <stdio.h>
Возможно, группа связанных заголовочных файлов, сгруппированный под маркировкой 'sys', но если я пробую что-то как "PCI человека" (существует pci.h заголовок в/usr/include/sys/, нет никакой записи.
Это удобный способ предоставить некоторую «структуру пространства имен» для заголовочные файлы. В мире Unix основное деление происходит между заголовками, такими как
, которые часто являются довольно общими и предназначены в первую очередь для использования в пользовательских программах, а не в основном для использования ядром операционной системы. Напротив, заголовки вроде
или
предназначались для использования при компиляции ядра - они были более системными.
В настоящее время он позволяет отделить заголовки вашего проекта от заголовков другого проекта. Например,
идентифицирует заголовок как принадлежащий к базе кода OpenSSL.
Я не знаю, есть ли конкретное название для этого стиля указания заголовков.
Обратите внимание, что если заголовки OpenSSL хранятся в каталоге / usr / local / include / openssl
, тогда вы указываете -I / usr / local / include
в команде компилятора. линия. На самом деле происходит поиск заголовка путем добавления к имени в угловых скобках префикса одного из ряда стандартных каталогов, из которых в Unix по умолчанию используется / usr / include
.Следовательно,
находится в /usr/include/stdio.h
, а
находится в /usr/include/sys/sysinfo.h
и т. д.
Они все еще являются заголовками, но они не прямо в пути поиска по умолчанию. Это часто делается для заголовков из сторонних библиотек, чтобы хранить их отдельно от стандартных заголовков libc.
Это связано с тем, как работает ваш препроцессор. Если ваш препроцессор ищет в / usr / include /
, тогда вам понадобится sys / sysinfo.h
. Если ваш препроцессор смотрит в / usr / include / sys /
, тогда вам понадобится только sysinfo.h
Попробуйте поиграть с gcc с -I
и -l
options
edit: это должны быть заглавная i и строчная L