検索
  • サインイン
  • サインアップ
パスワードのリセットが成功しました

興味のあるプロジェクトをフォローし、それらに関する最新ニュースをチェックしてください

C ヘッダー ファイル

コレクション 205
リーディング 91697
更新時間 2016-09-11

ヘッダファイルは拡張子.hのファイルで、Cの関数宣言やマクロ定義が含まれており、複数のソースファイルで参照・共有されます。ヘッダー ファイルには、プログラマが作成するヘッダー ファイルとコンパイラが提供するヘッダー ファイルの 2 種類があります。

プログラムでヘッダー ファイルを使用するには、C 前処理ディレクティブ #include を使用してそれを参照する必要があります。 stdio.h ヘッダー ファイルについてはすでに説明しました。これはコンパイラーに付属するヘッダー ファイルです。

ヘッダファイルの参照はヘッダファイルの内容をコピーすることと同じですが、特にプログラムが複数のソースファイル。

C または C++ プログラムでの簡単な実践として、すべての定数、マクロ、システム グローバル変数、関数プロトタイプをヘッダー ファイルに記述し、必要に応じていつでもこれらのヘッダー ファイルを参照することをお勧めします。

ヘッダー ファイルを参照するための構文

ユーザーおよびシステムのヘッダー ファイルを参照するには、前処理ディレクティブ #include を使用します。次の 2 つの形式があります:

#include <file>

この形式は、システム ヘッダー ファイルを参照するために使用されます。システム ディレクトリの標準リストで file という名前のファイルを検索します。ソース コードをコンパイルするときに、-I オプションを使用してディレクトリをリストの先頭に追加できます。

#include "file"

このフォームはユーザーのヘッダー ファイルを参照するために使用されます。現在のファイルが含まれるディレクトリで 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 回参照されると、コンパイラーはヘッダー ファイルの内容を 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 オプションを使用して定義できます。

ホットAIツール
Undress AI Tool
Undress AI Tool

脱衣画像を無料で

AI Clothes Remover
AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undresser.AI Undress
Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

Stock Market GPT
Stock Market GPT

AIを活用した投資調査により賢明な意思決定を実現

人気のツール
メモ帳++7.3.1
メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版
SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6
ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版
SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)