Правила поиска заголовочных файлов - PullRequest
3 голосов
/ 04 октября 2011

Когда вы пишете #include "foo.h", я бы ожидал, что компилятор сначала проверит каталог файла, выполняя включение (в отличие от текущего каталога), и, если его там не найдут, вернется к поиску списка путей как в случае #include <foo.h>.

Если не указан абсолютный путь, #include "/foo.h", в этом случае необходимо проверять только абсолютный путь.

Существуют ли какие-либо компиляторы C, где правила отличаются?

1 Ответ

3 голосов
/ 07 октября 2011

Kernighan & Ritchie write:

[# include "foo"] сначала ищет в связи с исходным исходным файлом (намеренно зависящей от реализации фразой), а если поиск не удался, то какв первой форме.

Это означает, что не делайте предположений относительно стратегии поиска кавычек.Тем не менее, все компиляторы, с которыми я столкнулся, разделяют практику поиска сначала по пути включаемого файла, и возвращаются к пути поиска компилятора, если не найдены.

...