Как включить заголовочные файлы без кавычек? - PullRequest
0 голосов
/ 18 октября 2018

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

#include "yourHeader.h"

Я пытаюсь использовать FLTK для его параметров графического интерфейса, однако многие из его заголовочных файлов включают в себя другие заголовочные файлы с использованием такого включения:

#include <FL/Blah.h>

вместо этого:

#include "FL/Blah.h"

Мне нужно было бы перейти к каждому заголовочному файлу, в котором есть угловые скобки включения, и заменить их на кавычки, чтобы они работали.Сейчас я работаю в CodeBlocks, если это имеет значение.Можно ли как-нибудь включить файлы заголовков, используя угловые скобки вместо кавычек, или я застрял с необходимостью сами зайти в файлы заголовков и вручную выгружать их все?

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Обычно , файл заголовка из

#include "headerfile"

будет искать в текущем исходном пути.Если поиск не удался, он обрабатывается так, как если бы

#include <header file>

делал.

Ваша библиотека FLTK использует include, как показано ниже?

#include <FL/Blah.h>

Родительский путь FLдолжен быть в предопределенном пути INCLUDE.Вы можете редактировать ваш Makefile или настройки проекта.

0 голосов
/ 18 октября 2018

Некоторый фон

Хорошо, есть два набора включаемых путей поиска.

Пользовательский путь включения:
Обычно это только текущий каталог (также известный как ".").
Примечание: это могут быть и другие, но для простоты давайте просто используем "."в приведенных ниже примерах.

Тогда есть системный путь включения:
Обычно это несколько мест на ваших машинах (это могут быть / usr / include и / usr/local/include).
Примечание: это могут быть и другие, но для простоты давайте просто предположим это в примерах ниже.

Как это обычно работает.

Есть предостереженияи не все компиляторы работают точно так же.Но вот хорошие эмпирические правила.

Когда вы включаете файл с кавычками "".

#include "yourHeader.h"

Он будет искать этот файл во всех каталогах, указанных в "пользователь включает путь ".Если он не может найти их там, он будет искать во всех каталогах, указанных в «пути включения системы».Таким образом, ваш компилятор будет искать следующие файлы:

./yourHeader.h
/usr/include/yourHeader.h
/usr/local/include/yourHeader.h

Он будет использовать первый найденный файл.

Когда вы используете <> в include:

#include <FL/Blah.h>

Сначала будет выполнен поиск файлов в «пути включения системы».Затем, в зависимости от вашего компилятора, при желании можно выполнить поиск по «пути включения пользователя» (но давайте предположим, что не сейчас).

Так что в этом случае он будет искать файлы:

/usr/include/FL/Blah.h
/usr/local/include/FL/Blah.h

Itбудет использовать первый найденный файл.

Изменение значения по умолчанию

Таким образом, это пути по умолчанию для поиска файла.Но ваш компилятор позволит вам добавить дополнительные пути к обоим из этих путей поиска (обычно).Как добавить пути поиска, зависит от вашего компилятора.

Для gcc (и, вероятно, clang) он использует -I и -isystem (и, вероятно, больше)

Ожидания.

Когда вы видите <> в заголовке включения, это обычно означает, что это уже установленная библиотека, которую вы ищете.Таким образом, ваш код предполагает, что на вашем компьютере уже установлена ​​библиотека FLTK.

Когда вы видите "" в заголовке include, вы должны предполагать, что это локальный файл, принадлежащий проекту.

0 голосов
/ 18 октября 2018

Вы можете добавить папку, содержащую все ваши заголовки, в ваш путь включения при компиляции. Как добавить путь включения по умолчанию для GCC в Linux?

...