インクルードファイル検索手順
コンパイラの#includeファイル検索手順の詳細を以下に示します。
#includeディレクティブの""間および<>間の文字列は、ソースファイル名としてそのまま使用されます。#includeファイルの名前が角括弧または二重引用符で指定された絶対パスの場合は、そのファイルが開きます。以下のように
#includeファイルの名前が角括弧で囲まれている場合#include <stdio.h>
以下のディレクトリでインクルード対象ファイルが検索されます。
-Iオプションで指定されるディレクトリ。指定順に検索されます(-Iを参照)。C_INCLUDE環境変数で指定されるディレクトリ(設定されている場合)(環境変数を参照)。自動的に設定されたライブラリシステムには、ディレクトリが含まれます。‑‑dlib_configを参照してください。
次のように
#includeファイルの名前が二重引用符で囲まれている場合#include "vars.h"
#include文が記述されているソースファイルのあるディレクトリが検索され、その後、角括弧で囲まれたファイル名の場合と同じ手順が実行されます。
#includeファイルが入れ子になっている場合は、最後にインクルードされたファイルのあるディレクトリから検索が開始され、上位方向に各インクルードファイルの検索が繰り返され、最後にソースファイルのディレクトリが検索されます。以下に例を示します。
src.c in directory dir\src #include "src.h" ... src.h in directory dir\include #include "config.h" ...
dir\exeがカレントディレクトリの場合は、以下のコマンドを使用してコンパイルします。
iccarm ..\src\src.c -I..\include -I..\debugconfigすると、以下のディレクトリ(記載順)でconfig.hファイルが検索されます。この例では、このファイルはdir\debugconfigディレクトリにあります。
| 現在のファイルは |
| 現在のファイルが含まれるファイル( |
| 最初の |
| 2番目の |
stdio.hなどの標準ヘッダファイルは角括弧、アプリケーション用のヘッダファイルは二重引用符で囲んでください。
注記
\と/の両方をディレクトリの区切り文字として使用できます。
詳細については、プリプロセッサの概要を参照してください。