2013-02-17 2 views
1

Есть ли способ проверить все местоположения, в которые входят поисковые запросы на C++? Я хотел бы понять, почему некоторые из них найдены, а другие нет.где все места, на которых включает поиск по С ++?

EDIT: Платформа Linux, г ++

+1

Для многих (наиболее?) Компиляторов существуют способы, но он будет специфичным для компилятора (например, VC++ использует содержимое переменной среды INCLUDE). –

+0

Это зависит от компилятора, конечно. – Jon

+5

платформа? компилятор? IDE? – eladidan

ответ

3

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

Например, gcc имеет два варианта - -I и -i для определения местоположения заголовков, указанных в <header.h> и "header.h". Если -I не указано, расположение по умолчанию

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

ищутся, как указано в the gcc documentation.

0

16.2 [cpp.include] определяет это для C++; язык в C почти такой же.

#include <header.h> ищет набор определений, определенных для реализации, для «заголовка» с этим именем. Этот «заголовок» не должен быть файлом; это может быть что-то, о чем волшебник знает компилятор.

#include "header.h" также ищет набор определений, определенных реализацией, но ищет файл с именем «header.h». если этот поиск не удается, он рассматривает директиву как #include <header.h>.

Многие компиляторы реализуют второй поиск, просматривая «текущий каталог», который для некоторых компиляторов означает каталог, из которого был запущен компилятор, а для других - каталог, в котором находится файл, содержащий директиву #include.

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

Смежные вопросы