2.3 Путь поиска ¶
По умолчанию препроцессор сначала ищет файлы заголовков, включенные в виде строки с кавычками в директиве #include "file", относительно директории текущего файла, а затем в предварительно сконфигурированном списке стандартных системных директорий. Например, если файл /usr/include/sys/stat.h содержит #include "types.h", GCC ищет файл types.h сначала в /usr/include/sys, а затем в своем обычном пути поиска.
Для формы с угловыми скобками #include <file>, стандартное поведение препроцессора заключается в поиске только в стандартных системных директориях. Точный список директорий поиска зависит от целевой системы, от того, как сконфигурирован GCC, и от места его установки. Вы можете найти список стандартных директорий поиска для вашей версии CPP, вызвав её с опцией -v. Например,
cpp -v /dev/null -o /dev/null
Существует ряд командных опций, которые можно использовать для добавления дополнительных директорий в путь поиска. Наиболее часто используемая опция – -Idir, которая заставляет препроцессор искать в директории dir после текущей директории (для формы с кавычками директивы) и перед стандартными системными директориями. Вы можете указать несколько опций -I в командной строке, в этом случае директории будут просматриваться в левостороннем порядке.
Если вам необходим отдельный контроль над путями поиска для форм с кавычками и угловыми скобками директивы ‘#include’, вы можете использовать опции -iquote и/или -isystem вместо -I. Подробное описание этих и других, менее часто используемых опций, см. в разделе Вызов.
Если вы указываете другие опции в командной строке, такие как -I, которые влияют на то, где препроцессор ищет файлы заголовков, список директорий, напечатанный опцией -v, отражает фактический путь поиска, используемый препроцессором.
Обратите внимание, что вы также можете предотвратить поиск препроцессором стандартных системных директорий заголовков с помощью опции -nostdinc. Это полезно при компиляции ядра операционной системы или какой-либо другой программы, которая не использует стандартные средства C-библиотеки, или самой C-библиотеки.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-10.5.0/cpp/Search-Path.html