スポンサードリンク
HOME > C言語 > 多重インクルードガード

C言語 - 多重インクルードガード

複数ファイルでのプログラム開発を行う時、

ヘッダファイルのインクルードに注意する事があります。

ヘッダファイルには、関数のプロトタイプ宣言、#define定数、typedef定義などが

含まれていますが、ヘッダファイルの中で多数の

ヘッダファイルがインクルードされる場合、

#define定数定義やtypedef定義が重なる事が良くあります。

このような事が起こると、コンパイラが警告やエラーを出します。

これは、プログラムの保守性を下げます。

また、program1.hファイルとprogram2.hがあった場合、

program1.hでは、program2.hをインクルードしていて、

program2.hでは、program1.hをインクルードすると、

インクルードの無限ループが起こります。

この場合もコンパイラが警告やエラーを出します。

このような不具合を解決するための仕組みがインクルードガードです。

program1.h
#ifndef __PROGRAM1_H__
#define __PROGRAM1_H__

ヘッダファイルの中身

#endif


最初にprogram1.hのインクルードがあった場合、

__PROGRAM1_H__ が定義されていないので、__PROGRAM1_H__ が定義され、

ヘッダファイルの中身をインクルードします。

2回目以降のインクルードがあった場合には、

既に__PROGRAM1_H__が定義されているので、

ヘッダファイルの中身をインクルードしません。

__PROGRAM1_H__という名前は、それぞれのファイルで別の名前に定義します。

こういった仕組みがあれば、多重インクルードによる多重定義の心配がなくなります。



スポンサードリンク







HOME

言語解説編
プログラミング用語・知識

C言語

C++言語

Java

C#

Visual Basic.NET

アプリケーション編
C言語による
コンソールプログラミング




Copyright (C) プログラミングランド All Rights Reserved