インクルード ファイルの使用

提供: RAD Studio
移動先: 案内検索

BCC32 への移動


C++ では、ヘッダー ファイルの拡張子は常に .h.hpp です。

インクルード ファイルの検索アルゴリズム

BCC32 では、#include 指令でソース コードにインクルードされたファイルを以下の方法で検索します。

  • #include 文でパスやディレクトリが指定された場合、コンパイラは指定された場所だけを探します。
    たとえば、コードに次のような文がある場合、
    #include "c:\C++\include\vcl\vcl.h"
    ヘッダー ファイル vcl.h はディレクトリ C:\C++\include\vcl に存在しなければなりません。
    さらに、次のような文を使用し、
    #include <vcl\vcl.h>
    [インクルード ファイルの検索パス]オプションを設定してパス C:\C++\include を指定する場合は、ファイル vcl.hC:\C++\includeC:\vcl ではなく C:\C++\include\vcl に存在しなければなりません。
  • ソース コードに
    #include "somefile"
    という文がある場合、コンパイラは以下の順に <somefile> を探します。
    1. #include 文が記述されているファイルと同じディレクトリ
    2. そのファイルをインクルード(#include)しているファイルのディレクトリ
    3. 現在のディレクトリ
    4. [インクルード ファイルの検索パス]オプションで指定されたディレクトリ

ライブラリ ファイルの検索アルゴリズム

ライブラリ ファイルの検索アルゴリズムは、以下のように、インクルード ファイルの場合と似ています。

  • 暗黙的なライブラリ: C++ コンパイラでは、([ライブラリ パス]オプションで)指定されたライブラリ ディレクトリでのみ暗黙的なライブラリを探します。これは、#include "somefile" の場合の検索アルゴリズムと似ています。暗黙的ライブラリ ファイルには、コンパイラが自動的にリンクするものと、スタートアップ オブジェクト ファイル(C0x.OBJ)があります。
  • 明示的なライブラリ: コンパイラが明示的な(ユーザー指定の)ライブラリを探す場所は、ライブラリ ファイルの指定の仕方にもよります。明示的ライブラリ ファイルは、コマンド ラインやプロジェクト ファイルでユーザーが指定するもので、.LIB 拡張子の付いたファイルです。
    • ドライブ レターやディレクトリ名の付いていない明示的ライブラリ ファイル名(たとえば MYLIB.LIB など)を指定した場合、コンパイラはそのライブラリをまず現在のディレクトリで探します。最初の検索に失敗した場合、コンパイラは、[ライブラリ パス]オプションで指定されたディレクトリ内を調べます。これは、#include "somefile" の場合の検索アルゴリズムと似ています。
    • ドライブやディレクトリの情報が付いたユーザー指定ライブラリが明示された場合(C:\mystuff\mylib1.lib など)、C++ コンパイラでは、指定されたライブラリ ディレクトリではなく、ライブラリ パス名の一部として明示的に示された場所でのみライブラリを探します。

関連項目