「インクルードガード」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「インクルードガード (include guard)とは、C/C++のヘッダファイルのインクルードが2回目以降の展開を防ぐためのスキップす...」)
(相違点なし)

2013年12月27日 (金) 20:59時点における版

インクルードガード (include guard)とは、C/C++のヘッダファイルのインクルードが2回目以降の展開を防ぐためのスキップするためにプロプロセッサに指示するテクニックです。

読み方

インクルードガード
いんんくるーどがーど
include guard
いんんくるーどがーど

概要

プロプロセッサは、プロプロセッサディレクティブ include に遭遇するたびに、ヘッダファイルを展開しようとします。ヘッダAがヘッダBを、ヘッダBがヘッダAを互いにインクルードしているとしたら、どちらか一方をインクルードすると定義が二重に定義されます。インクルードガードは、そういった事態を防ぐものです。

ifndef/define を使用してインクルードガードを書くのが一般的でした。 C++では、プラグマ #pragma onceを使用して、インクルードガードを実現します。

インクルードガード

#pragma once

従来型のインクルードガード

#ifndef HOGE_H
#define HOGE_H
class Hoge {
};
#endif // HOGE_H

関連項目