「ヘッダファイル」の版間の差分

提供: C++入門
移動: 案内検索
(ページの作成:「C++のヘッダファイル (header file, インクルードファイル, include file)とは、拡張子に .hpp, .h, .hxx, .tcc 、もしくは、拡張子なし(...」)
 
(pragma once によるインクルードガード)
 
行40: 行40:
 
* C/C++の標準仕様ではありません。
 
* C/C++の標準仕様ではありません。
 
* シンボリックリンクを正しくハンドリングできないコンパイラがあります。
 
* シンボリックリンクを正しくハンドリングできないコンパイラがあります。
 +
 +
pragma による [[インクルードガード]] の例は、以下の通りです。
 +
<syntaxhighlight lang="cpp">
 +
#pragma once
 +
</syntaxhighlight>
  
 
== 変数の宣言 ==
 
== 変数の宣言 ==

2014年7月6日 (日) 00:33時点における最新版

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();

関連項目