2012-09-18 87 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中。

相關問題