2012-09-18 115 views
0

在C++中,我搞乱了boost库,并且在我的编译器的include文件夹中有“boost \”目录以及所有boost .hpp文件和目录, MinGW的\包括\提升\”。现在是什么让我困惑的是,当我想用​​文件“lambda.hpp”我必须实际键入:当在C++中包含目录时指定完整路径

#include <boost/lambda/lambda.hpp> 

,但如果我包括一个完整的目录,如“提升\算法\”仅我必须键入:

#include <algorithm> 

即使“算法”文件夹不是目录“MinGW的\包括”,它在“MinGW的\包括\提升\”。 为什么在包含整个目录而不是单个头文件时不需要提供完整路径?

+1

'算法'不是一个文件夹,是一个STD头文件,位于标准的C++默认include目录中。 'boost/algorithm'文件夹是另一回事,它包含很多文件。 –

回答

5

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

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

顺便说一句,所有Boost头文件都有后缀(即扩展名).hpp,而标准库头文件根本没有。

至于认为包含完整的目录algorithm,预处理器不支持该目录,而必须单独将文件包含在路径boost/algorithm中。

相关问题