0

C ++では、ブーストライブラリをいじっています。コンパイラのインクルードフォルダの「MinGW \ include \ boost \」に、すべてのブースト.hppファイルとディレクトリなどを含む「boost\」ディレクトリがあります。ここで私を混乱させるのは、ファイル「lambda.hpp」を使用する場合、実際に次のように入力する必要があるということです。

 #include <boost/lambda/lambda.hpp>

ただし、「boost \ Algorithm \」などのディレクトリ全体を含める場合は、次のように入力するだけです。

#include <algorithm>

「algorithm」フォルダは「MinGW\include」ディレクトリにありませんが、「MinGW \ include \boost\」にあります。個々のヘッダーファイルではなく、ディレクトリ全体をインクルードするときにフルパスを指定する必要がないのはなぜですか?

4

1 に答える 1

5

ヘッダーファイル<algorithm>は、Boostではなく、標準ライブラリの一部です。

パスは、プリプロセッサがヘッダーファイルを検索するパスのリストに関連しています。したがって、これらのパスの1つのルートに<algorithm>ファイルがある場合は、ファイルを持つサブフォルダーを持つサブフォルダーを持つ別の検索パスがあります。algorithm<boost/lambda/lambda.hpp>boostlambdalambda.hpp

ちなみに、すべてのBoostヘッダーファイルにはサフィックス(つまり拡張子)が付いていますが.hpp、標準ライブラリのヘッダーファイルにはサフィックスがありません。

完全なディレクトリを含めると考えると、algorithmプリプロセッサはそれをサポートしていません。代わりに、パスにファイルをboost/algorithm個別に含める必要があります。

于 2012-09-18T06:38:41.017 に答える