在C ++中包含目录时指定完整路径

时间:2012-09-18 06:34:31

标签: c++ boost compiler-construction linker mingw

在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 \”中。 为什么在包含整个目录而不是单个头文件时,我不需要提供完整的路径?

1 个答案:

答案 0 :(得分:5)

头文件<algorithm>是标准库的一部分,而不是Boost。

路径相对于预处理器搜索头文件的路径列表。因此,在<algorithm>的情况下,其中一个路径的根目录中存在文件algorithm,而在<boost/lambda/lambda.hpp>的情况下,存在另一个具有子文件夹{{1}的搜索路径它有一个子文件夹boost,其文件为lambda

顺便说一句,所有Boost头文件都有后缀(即扩展名)lambda.hpp,而标准库头文件则没有。{/ p>

至于考虑包含完整目录.hpp,预处理器不支持,而是必须分别在路径algorithm中包含文件。