ヘッダファイル

提供: C++入門
2014年7月6日 (日) 00:33時点におけるDaemon (トーク | 投稿記録)による版 (pragma once によるインクルードガード)

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

C++のヘッダファイル (header file, インクルードファイル, include file)とは、拡張子に .hpp, .h, .hxx, .tcc 、もしくは、拡張子なし(iostream, string等)のファイルで、マクロの定義、関数やクラスのプロトタイプ、テンプレートを記述するファイルです。

読み方

ヘッダファイル
へっだふぁいる
header file
へっだー ふぁいる
インクルードファイル
いんくるーどふぁいる
include file
いんくるーどふぁいる

概要

ヘッダファイルでは、変数や関数、クラス、テンプレートのプロトタイプ宣言、マクロの定義などを行います。

ヘッダファイルの位置

Unix系OS

Linux, FreeBSD などの OS では、ヘッダファイルは以下のディレクトリにあります。

  • /usr/include
  • /usr/local/include

自分のプロジェクトのヘッダファイルの格納先

これは、いろいろな考え方がありますが、いくつ例を挙げます。

  • ソースファイル(.cpp)と同じディレクトリにヘッダファイルを保存する。
  • include ディレクトリを作成して、その中にヘッダファイルを保存する。
    • ソースファイル src
    • ヘッダファイル include

インクルードガード

ifndef によるインクルードガード

C/C++では、ヘッダファイルを2回以上、インクルードが繰り返されないように インクルードガードを記載します。

hoge.h の例です。

#ifndef HOGE_H
#define HOGE_H
 
// ここにヘッダの内容を記載します。
 
#endif // HOGE_H

pragma once によるインクルードガード

pragma(プラグマ)を使用したインクルードガードは、マイクロソフトの Visual Studio のコンパイラだけではありません。 注意事項として、以下のことがあげられます。

  • C/C++の標準仕様ではありません。
  • シンボリックリンクを正しくハンドリングできないコンパイラがあります。

pragma による インクルードガード の例は、以下の通りです。

#pragma once

変数の宣言

ヘッダファイルでは、変数の宣言はせず、externで、いずれかのC++のソースファイルで宣言された変数を書きます。

extern int global_message;

関数の宣言

foo()の実体は、C++のソースファイルに記述し、そのプロトタイプをヘッダファイルに書きます。

void foo();

関連項目




スポンサーリンク