Cヘッダファイル
ヘッダファイルは、C関数の宣言とマクロ定義を含むファイル拡張子の.h、である、複数のソース・ファイルによって共有挙げました。 ヘッダーの2つのタイプがあります。ヘッダーファイルとコンパイラを書くためにプログラマはヘッダファイルが付属しています。
あなたはヘッダファイルを使用するプログラムでは、それを参照するためにCプリプロセッサ・ディレクティブの#includeを使用します 。 我々はすでに、コンパイラに付属しているヘッダファイルであるstdio.hのヘッダファイルを、見てきました。
見積ヘッダファイルヘッダファイルの内容をコピーするのと同じですが、そうするプログラムは、ソースファイルが複数で構成されている場合は特に、エラーを起こしやすいので、我々は、ソース・ファイルに直接ヘッダファイルの内容をコピーしません。
CまたはC ++プログラムでの簡単な練習は、いつでも必要なときにヘッダファイルに書き込まれたすべての定数、マクロ、グローバル変数と関数のプロトタイプシステムは、これらのヘッダを参照することをお勧めします。
参照構文のヘッダファイル
#includeは 、ユーザとシステムのヘッダファイルを参照することができる前処理ディレクティブの使用。それは、次の2つの形式があります。
#include <file>
この形式は、システムヘッダファイルを参照するために使用されます。 これは、システムディレクトリの標準リスト内のファイルという名前のファイルを検索します。 ソースコードをコンパイルするときは、事前にディレクトリの前にオプションリストを-Iすることができます。
#include "file"
このフォームは、ユーザヘッダファイルを参照するために使用されます。 これは、現在のファイルを含むディレクトリ内のファイルという名前のファイルを検索します。 ソースコードをコンパイルするときは、事前にディレクトリの前にオプションリストを-Iすることができます。
参照アクションは、ファイルのヘッダ
#includeディレクティブは、Cプリプロセッサは、入力として指定されたファイルを閲覧するよう指示します。プリプロセッサの出力が生成された出力、生成された参照テキスト出力ファイルと出力#include命令が含まれています。 たとえば、次のように、ヘッダファイルがheader.hを持っている場合:
char *test (void);
メインプログラムprogram.cをを使用して、ヘッダファイル、次のように:
int x; #include "header.h" int main (void) { puts (test ()); }
コンパイラは、次のトークンストリームが表示されます。
int x; char *test (void); int main (void) { puts (test ()); }
唯一の1つのヘッダファイル参照
ヘッダファイルが二回参照されている場合、コンパイラはエラーを生成します2つのヘッダファイルの内容を処理します。 次のようにこれを防止するために、標準的な慣行は、条件付きコンパイル文でファイルの内容全体を置くことです。
#ifndef HEADER_FILE #define HEADER_FILE the entire header file file #endif
この構造は、一般に、ラッパー#ifndefのと呼ばれます。 再びヘッダファイルを参照する場合HEADER_FILEが定義されているので、条件は、falseです。 この場合、プリプロセッサは、コンパイラがそれを無視し、ファイルの内容全体をスキップします。
条件付き引用
時には、いくつかの異なるヘッダーファイルからプログラムへの参照を選択する必要があります。 たとえば、異なるオペレーティング・システム上の設定パラメータを指定する必要があります。 次のように、これを達成するために一連の条件を使用することができます。
#if SYSTEM_1 # include "system_1.h" #elif SYSTEM_2 # include "system_2.h" #elif SYSTEM_3 ... #endif
そうするヘッダファイルより多くの時間が非常に不適切である場合は、ヘッダーを定義するための名前のプリプロセッサマクロを使用します。 これは、条件付きの参照と呼ばれています。これは、直接パラメータの#includeヘッダファイルの名前として使用されていない、あなただけの名前を置き換えるために、マクロを使用する必要があります。
#define SYSTEM_H "system_1.h" ... #include SYSTEM_H
SYSTEM_Hは、もともとの#includeのように書かれたプリプロセッサは、system_1.h見え、拡大します。 SYSTEM_H Makefileはあなたのために、-Dオプションによって定義することができます。