https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html утверждает, что
По умолчанию препроцессор ищет заголовочные файлы, включенные в форму кавычек директивы #include "file"
, сначала относительно каталога текущего файла, а затем в предварительно сконфигурированном списке стандартных системных каталогов. Например, если /usr/include/sys/stat.h
содержит #include "types.h"
, GCC ищет types.h
сначала в /usr/include/sys
, а затем в обычном пути поиска.
Для формы угловых скобок #include <file>
поведение препроцессора по умолчанию заключается в поиске только в стандартных системных каталогах.
Таким образом, документ, который вы читаете, неверен. Возможно, мистер Гоф никогда не пытался написать нерекурсивный Makefile или отделить свои исходные и объектные каталоги, и поэтому никогда не замечал, что «текущий каталог» и «каталог, содержащий текущий файл» не обязательно то же самое.
GCC имеет целый ряд параметров командной строки, которые вы можете использовать для изменения конфигурации #include
. Есть даже опция, которая отключает при поиске в каталоге текущего файла (-I-
), но ее нельзя использовать во многих операционных системах, потому что она сломает заголовки библиотеки C.