0

在 C++ 中,我弄乱了 boost 库,并且我有一个包含所有 boost .hpp 文件和目录的“boost\”目录,等等在我的编译器的包含文件夹中的“MinGW\include\boost\”。现在让我感到困惑的是,当我想使用文件“lambda.hpp”时,我必须实际输入:

 #include <boost/lambda/lambda.hpp>

但如果我包含整个目录,例如“boost\algorithm\”,我只需要输入:

#include <algorithm>

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

4

1 回答 1

5

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

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

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

至于认为你包含完整的目录algorithm,预处理器不支持它,而是你必须boost/algorithm分别在路径中包含文件。

于 2012-09-18T06:38:41.017 回答