「インクルードガード」の版間の差分
提供: 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