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