在C ++中,我正在搞乱升级库,我有“boost \”目录,包含所有的boost .hpp文件和目录,以及我的编译器在“MinGW \ include \ boost \”的include文件夹中。现在令我困惑的是,当我想使用文件“lambda.hpp”时,我必须实际输入:
#include <boost/lambda/lambda.hpp>
但如果我要包含整个目录,例如“boost \ algorithm \”,我只需输入:
#include <algorithm>
即使“algorithm”文件夹不在“MinGW \ include”目录中,它也在“MinGW \ include \ boost \”中。 为什么在包含整个目录而不是单个头文件时,我不需要提供完整的路径?
答案 0 :(得分:5)
头文件<algorithm>
是标准库的一部分,而不是Boost。
路径相对于预处理器搜索头文件的路径列表。因此,在<algorithm>
的情况下,其中一个路径的根目录中存在文件algorithm
,而在<boost/lambda/lambda.hpp>
的情况下,存在另一个具有子文件夹{{1}的搜索路径它有一个子文件夹boost
,其文件为lambda
。
顺便说一句,所有Boost头文件都有后缀(即扩展名)lambda.hpp
,而标准库头文件则没有。{/ p>
至于考虑包含完整目录.hpp
,预处理器不支持,而是必须分别在路径algorithm
中包含文件。