boost — Указание полного пути при добавлении каталогов в Stack Overflow

В C ++ я работаю с библиотекой boost, и у меня есть каталог boost \ со всеми файлами и каталогами boost .hpp, например, в папке include моего компилятора в MinGW \ include \ boost \. Что меня смущает, так это то, что когда я хочу использовать файл «lambda.hpp», мне нужно ввести:

 #include <boost/lambda/lambda.hpp>

но если я включаю весь каталог, такой как «boost \gorithm», мне нужно только набрать:

#include <algorithm>

хотя папка «алгоритм» не находится в каталоге «MinGW \ include», она находится в «MinGW \ include \ boost \».
Почему мне не нужно указывать полный путь при включении целых каталогов, а не отдельных заголовочных файлов?

0

Решение

Заголовочный файл <algorithm> является частью стандартной библиотеки, а не Boost.

Пути относятся к списку путей, которые препроцессор ищет для заголовочных файлов. Так что в случае <algorithm> есть файл algorithm в корне одного из этих путей, а в случае <boost/lambda/lambda.hpp> есть другой путь поиска с подпапкой boost которая имеет подпапку lambda у которого есть файл lambda.hpp,

Кстати, все заголовочные файлы Boost имеют суффикс (то есть расширение) .hpp в то время как стандартный файл заголовка библиотеки не имеет ни одного вообще.

Что касается мышления, вы включаете полный каталог algorithmпрепроцессор не поддерживает это, вместо этого вы должны включить файлы в путь boost/algorithm по отдельности.

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector