#include

提供: Appmethod Topics
移動先: 案内検索

プリプロセッサ指令:インデックス への移動


構文

#include <header_name>
#include "header_name"
#include <macro_definition>

Clang ベースの C++ コンパイラでの #include 構文については、「Clang ベースの C++ コンパイラ、#include パスとルックアップ」を参照してください。

説明

#include 指令は、指定された他のファイル(インクルード ファイル、ヘッダー ファイル、ヘッダーなど)をソース コードに挿入します。 構文には 3 つの書式があります:

  • 1 つ目と 2 つ目の書式は、マクロ展開が試みられないことを示します。つまり、header_name ではマクロ識別子は検索されません。 header_name は、拡張子付き(通常はヘッダー ファイルを表す .h)の有効なファイル名でなければなりません。オプションでパス名とパス区切りを付けます。
  • 3 つ目の書式は、#include に続く最初の空白以外の文字として、<" が出現しないことを前提としています。また、マクロ識別子を <header_name> 形式または "header_name" 形式のどちらかを用いた区切り文字付きの有効なヘッダー名に展開する、マクロ定義が存在することも前提としています。

プリプロセッサは #include 行を削除し、概念的には、ソース コードのその場所で対象行をインクルード ファイルのテキスト全体に置換します。 ソース コードそのものは変更されませんが、コンパイラはその拡大されたテキストを "見る" ことになります。 そのため #include の位置が、インクルードしたファイルのすべての識別子のスコープと存続期間に影響を与える可能性があります。

header_name に明示的なパスを指定した場合は、そのディレクトリだけが検索されます。

<header_name> 形式と "header_name" 形式の違いは、インクルード ファイルを検索するときに用いられる検索アルゴリズムにあります。

構文形式 検索アルゴリズム

引用形式

"header_name" の書式では、ユーザーが用意したインクルード ファイルを指定します。ファイルは、次の順序で検索されます。

  1. #include 文が含まれるファイルと同じディレクトリ
  2. そのファイルをインクルード(#include)しているファイルのディレクトリ
  3. 現在のディレクトリ
  4. [インクルード ファイルの検索パス](-I)オプションで指定したパス

角かっこ形式

<header_name> の書式では、標準インクルード ファイルを指定します。 [インクルード ファイルの検索パス](-I) オプションで定義された順序で、各インクルード ディレクトリが検索されます。 ファイルがデフォルトのディレクトリにない場合は、エラー メッセージが表示されます。

関連項目