разрешение пути включает - PullRequest
1 голос
/ 13 февраля 2011

Есть ли определенный способ увидеть, куда разрешается данное #include <example.h>?В моем коде #include <linux/unistd.h>, но я не знаю, какой unistd.h используется.

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

Если вы используете параметр командной строки -E для получения выходных данных препроцессора, он сообщит вам полный путь к каждому включенному файлу заголовка, включая файлы, включенные другими заголовками.Например:

$ cat test.c
#include <unistd.h>
$ gcc -E test.c
# 1 "test.c"
# 1 "<built-in>"
# 1 "<command-line>"
# 1 "test.c"
# 1 "/usr/include/unistd.h" 1 3 4
# 71 "/usr/include/unistd.h" 3 4
# 1 "/usr/include/_types.h" 1 3 4
# 27 "/usr/include/_types.h" 3 4
# 1 "/usr/include/sys/_types.h" 1 3 4
# 32 "/usr/include/sys/_types.h" 3 4
# 1 "/usr/include/sys/cdefs.h" 1 3 4
# 33 "/usr/include/sys/_types.h" 2 3 4
# 1 "/usr/include/machine/_types.h" 1 3 4
# 34 "/usr/include/machine/_types.h" 3 4
# 1 "/usr/include/i386/_types.h" 1 3 4
# 37 "/usr/include/i386/_types.h" 3 4
typedef signed char __int8_t;

(lots more output)

Так что в этом случае используется заголовок /usr/include/unistd.h.

0 голосов
/ 13 февраля 2011

Из документации GCC ,

Если в обычной системе Unix не указано иное, она будет искать заголовки, запрошенные с помощью #include в:

 /usr/local/include
 libdir/gcc/target/version/include
 /usr/target/include
 /usr/include

В приведенном выше описании target - это каноническое имя системы, для которой GCC был настроен для компиляции кода;часто, но не всегда совпадает с каноническим названием системы, в которой он работает.версия - это версия GCC, которая используется.

Вы можете добавить в этот список параметр командной строки -Idir.Все каталоги с именем -I ищутся в порядке слева направо перед каталогами по умолчанию.Единственное исключение - когда dir уже ищется по умолчанию.В этом случае этот параметр игнорируется, а порядок поиска системных каталогов остается неизменным.

Поэтому, если вы не добавите ключ -I (заглавная буква, а не ell), включенная версия будетВерсия найдена в первом из тех каталогов, в которых она содержится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...