Включая заголовочные файлы C из другого каталога - PullRequest
0 голосов
/ 12 ноября 2010

Я всегда понимал, что, выполняя #include <header.h>, он смотрит в каталоги системы и #include "header.h" смотрит в локальный каталог. Но я просто смотрел на исходный код Python, и он использует метод "header.h" для определения заголовков в каталоге одного уровня.

Так что в py3k/Python/ast.c это #include "Python.h". Но Python.h в py3k/Include/Python.h

Это что-то общее, что я просто никогда не видел, не работая над каким-то действительно крупным C-проектом? Как мне сказать, по крайней мере, мою IDE, чтобы посмотреть в py3k/Include?

Обновление
Я понял, как сказать, чтобы моя IDE включила их, это была просто глупость и орфографическая ошибка. Но меня больше интересует, почему "" работает. Разве это не отличается между "" и <>?

Ответы [ 2 ]

5 голосов
/ 12 ноября 2010

И #include <header>, и #include "header" выглядят в "местах, определенных реализацией" , т.е. это зависит от используемого компилятора и его настроек.Для #include <h> обычно это какая-то стандартная система, включающая каталоги, и что бы вы ни настраивали компилятором для дополнительного просмотра.
Разница между двумя версиями заключается в том, что, если поиск #include "header" не поддерживается или не выполняется, он будет обработан повторно. ", как если бы оно читалось #include <header>" (C99, §6.10.2 ).

5 голосов
/ 12 ноября 2010

Вам нужно как-то указать компилятору, в каких каталогах искать - для GCC это означает использование флага -I.Посмотрите на вашу комбинацию IDE / компилятор.

...