インクルードガード

提供: C++入門
2013年12月27日 (金) 20:59時点におけるDaemon (トーク | 投稿記録)による版 (ページの作成:「インクルードガード (include guard)とは、C/C++のヘッダファイルのインクルードが2回目以降の展開を防ぐためのスキップす...」)

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

インクルードガード (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

関連項目




スポンサーリンク