組み込みファイルのパス名の指定
#include プリプロセッサー・ディレクティブを使用して 1 つのソース・ファイルを別のソース・ファイルに組み込むときには、組み込むファイル名を指定する必要があります。
絶対パス名または相対パス名を使用して、
ファイル名を指定することができます。
- 絶対パス名を使用したファイルの組み込み
絶対パス名 (フルパス名 とも呼ばれる) は、ルート・ディレクトリーから始まるファイルの完全な名前です。
これらのパス名は、/ (スラッシュ) 文字で始まります。
絶対パス名は、ユーザーが現在いるディレクトリー (作業 ディレクトリーまたは現行 ディレクトリーと呼ばれる) に関係なく、指定されたファイルを探し出します。
以下の例は、John Doe のサブディレクトリー example_prog にあるファイル mine.h への絶対パスを指定しています。
/u/johndoe/example_prog/mine.h
- 相対パス名を使用したファイルの組み込み
相対パス名 は、現行ソース・ファイルを保持するディレクトリー、
または -Idirectory オプションを使用して定義された
ディレクトリーに関連するファイルを探し出します。
相対パス名を使用した組み込みファイルのディレクトリー検索シーケンス
C および C++ は #include プリプロセッサー・ディレクティブの 2 つのバージョンを定義しています。IBM XL C/C++ は両方をサポートします。#include ディレクティブでは、組み込みファイル名は < > または " " 区切り文字で囲まれます。
区切り文字の選択により、指定された組み込みファイル名の検索に使用される検索パスが決定されます。以下のように、コンパイラーはその組み込みファイルが検出されるまで検索パスのすべてのディレクトリーで組み込みファイルを検索します。
#include の型 |
ディレクトリーの検索順序 |
#include <file_name> |
- コンパイラーはまず、-Idirectory コンパイラー・オプションによって指定された各ユーザー・ディレクトリーで、コマンド行にユーザー・ディレクトリーが指定された順に、file_name を検索します。
- C++ のコンパイルの場合、コンパイラーはその後、-qcpp_stdinc および -qgcc_cpp_stdinc コンパイラー・オプションによって指定されたディレクトリーを検索します。
- 最後に、コンパイラーは -qc_stdinc および -qgcc_c_stdinc コンパイラー・オプションによって指定されたディレクトリーを検索します。
|
#include "file_name" |
- コンパイラーは最初に、現行ソース・ファイルが常駐するディレクトリーで組み込みファイルを検索します。現行ソース・ファイルとは、ディレクティブ #include "file_name" を含むファイルです。
- その後コンパイラーは、#include <file_name> に対する前述の検索順序に従って、組み込みファイルを検索します。
|
注:
- file_name は、組み込まれるファイル名を指定し、
必要に応じて、そのファイルへの完全または部分ディレクトリー・パスを含むことができます。
- ファイル名のみを指定した場合、コンパイラーは、ディレクトリー検索リストの中でそのファイルを探します。
- ファイル名を部分ディレクトリー・パスと一緒に指定した場合、
コンパイラーは、検索パスの中の各ディレクトリーにその部分パスを付加し、
完全になったディレクトリー・パスの中でそのファイルの検索を試みます。
- 絶対パス名を指定した場合、#include ディレクティブの 2 つのバージョンの効果は同じです。
これは、組み込まれるファイルのロケーションが完全に指定されているからです。
- #include ディレクティブの 2 つのバージョンの唯一の違いは、
" " (ユーザー組み込み) バージョンでは、
最初に現行ソース・ファイルの常駐するディレクトリーから検索を開始するということです。
一般に、標準ヘッダー・ファイルは < > (システム組み込み) バージョンを使用して組み込まれ、ユーザーが作成したヘッダー・ファイルは " " (ユーザー組み込み) バージョンを使用して組み込まれます。
- -qstdinc および -qidirfirst オプションと一緒に、
-Idirectory オプションを指定することにより、
検索順序を変更することができます。
該当する場合は、-Idirectory オプションで指定したディレクトリーと、
現行のソース・ファイル・ディレクトリーのみを検索するため、
-qnostdinc オプションを使用します。
-qidirfirst オプションを #include "file_name" ディレクティブと共に使用すると、-Idirectory オプションを使用して指定されたディレクトリーを他のディレクトリーを検索する前に検索します。
ディレクトリー検索パスを指定するには、-I オプションを使用します。
関連情報