カテゴリ: C言語 更新日: 2026/01/29

C言語のヘッダファイルで定数を共有する方法をやさしく解説!初心者向け完全ガイド

C言語のヘッダファイルで定数を共有する方法
C言語のヘッダファイルで定数を共有する方法

先生と生徒の会話形式で理解しよう

生徒

「同じ定数を複数のC言語ファイルで共有したいときは、毎回同じ定数を書かなきゃいけないんですか?」

先生

「毎回書くとミスの原因になりますし、後から変更するときも大変です。そこで、ヘッダファイルを使って定数を共有するのが便利なんです。」

生徒

「ヘッダファイルって聞いたことはありますが、何をする場所なのかよく分かりません。」

先生

「ヘッダファイルは、定数や関数の宣言をまとめておく特別なファイルです。プロジェクトの中で共有したい情報をひとつに集める役割をもちます。」

生徒

「なるほど。同じ定数を色々な場所で使うときに便利なんですね。具体的にどう使うんですか?」

先生

「それでは、ヘッダファイルを使って定数を共有する方法を順番に説明していきましょう。」

1. ヘッダファイルとは何か

1. ヘッダファイルとは何か
1. ヘッダファイルとは何か

ヘッダファイルは、C言語で複数のソースファイルから共通して使いたい情報をまとめておくためのファイルです。ファイルの名前は通常.hで終わります。例えば、ゲームの設定、大きさ、得点、配列の長さなど、複数の場所で使う値をまとめてひとつの場所に書いておけば、あとで変更したいときもとても簡単になります。

もしヘッダファイルを使わずに同じ定数を別々のファイルに書くと、修正を忘れたり数字が違ったりして、予期しない動作が起きることがあります。プログラミング未経験の人でも、情報をひとつにまとめることが便利なのはイメージしやすいはずです。

2. ヘッダファイルに定数を書く理由

2. ヘッダファイルに定数を書く理由
2. ヘッダファイルに定数を書く理由

ヘッダファイルに定数を書く一番の理由は、修正のしやすさ読みやすさです。例えばゲームの制限時間が10秒から20秒になったとき、ヘッダファイルを使っていればひとつの数値を変えるだけで済みます。もし複数のソースファイルに直接数字を書いていると、全部の場所を探して書き換える必要があります。

また、数字に名前をつけておけば、プログラムを読む人が意味を理解しやすくなります。コンパイル(プログラムを実行できる形に変換する作業)でも、安全で正確な動作につながります。

3. マクロ定数をヘッダファイルに書く方法

3. マクロ定数をヘッダファイルに書く方法
3. マクロ定数をヘッダファイルに書く方法

C言語ではよく#defineを使って定数を表現します。この書き方はソースを読みやすくし、あとで変更もしやすくなります。ヘッダファイルに定義することで、複数のファイルから同じ定数を参照できます。


// config.h
#ifndef CONFIG_H
#define CONFIG_H

#define MAX_SCORE 100
#define USER_COUNT 5

#endif

そしてこのヘッダファイルを別のソースファイルで使うには、#includeを書きます。


// main.c
#include <stdio.h>
#include "config.h"

int main()
{
    printf("%d\n", MAX_SCORE);
    printf("%d\n", USER_COUNT);
    return 0;
}

このように書いておけば、MAX_SCOREUSER_COUNTをどこでも使えます。もし値を変えたいときは、config.hの中だけ変えれば済みます。

4. constを使ってヘッダファイルに定数を書く方法

4. constを使ってヘッダファイルに定数を書く方法
4. constを使ってヘッダファイルに定数を書く方法

マクロだけでなく、constを使って定数を宣言する方法もあります。こちらは型を持っていて、値の種類が明確になるという特徴があります。たとえば整数の定数ならconst intを使います。


// config.h
#ifndef CONFIG_H
#define CONFIG_H

extern const int LIMIT;

#endif
そして別のファイルで値を設定します。

// config.c
#include "config.h"
const int LIMIT = 300;
最後に使う側のファイルです。

// main.c
#include <stdio.h>
#include "config.h"

int main()
{
    printf("%d\n", LIMIT);
    return 0;
}

externという言葉は「外にある変数を使うよ」という意味です。ヘッダファイルには宣言だけを書き、実際の値は別のファイルで決めます。この方法は定数に型が必要な場合や、複雑なプロジェクトでよく使われます。

5. ヘッダファイルがない場合に起きる問題

5. ヘッダファイルがない場合に起きる問題
5. ヘッダファイルがない場合に起きる問題

もしヘッダファイルを使わずに手作業で同じ定数を複数のファイルへ書いた場合、気づかないうちに数字が違うまま動いてしまうことがあります。さらに、変更のたびに全部のファイルを探して修正する必要があり、新しい人がコードを読むときにも分かりづらい状態になります。ヘッダファイルは、そのようなミスを防ぐための便利な仕組みです。

6. インクルードガードの意味

6. インクルードガードの意味
6. インクルードガードの意味

ヘッダファイルには、さきほどの例にあった#ifndef#defineが書かれています。これはインクルードガードと呼ばれ、同じヘッダファイルが何度も読み込まれることを防ぐための仕組みです。二回読み込まれてしまうと、同じ定義が重複してエラーになることがあります。この仕組みのおかげで、トラブルを防ぎ安全にC言語のプログラムを書くことができます。

7. どんな場面で使うべきか

7. どんな場面で使うべきか
7. どんな場面で使うべきか

ヘッダファイルで定数を共有する方法は、たくさんの場面で使えます。ゲームの設定値、センサーのしきい値、メニューの数、商品情報、得点の計算、テストデータの配列、どれも複数のソースファイルで共通の数を使います。初心者のうちにこの書き方を身につけておくと、大きなプログラムでも整理して書けるようになります。

プログラムは大きくなるほど情報が散らばり、どこで使われているのか分かりにくくなります。ヘッダファイルでひとつにまとめておけば、見通しのよいプログラムを作ることができ、エラーやバグを防ぎやすくなります。

関連記事:
カテゴリの一覧へ
新着記事
New1
C++
C++のメンバアクセス演算子を完全解説!初心者でもわかる . → :: の使い方まとめ
New2
Rust
Rustの文字列を極める!&str(文字列スライス)の基本概念とString型との違い
New3
C++
C++のキャスト演算子を完全解説!dynamic_cast・static_cast・const_cast・reinterpret_castを初心者向けに説明
New4
C++
C++開発のIDE選びを完全ガイド!初心者でもわかるCLion・Eclipse CDT・Qt Creator比較
人気記事
No.1
Java&Spring記事人気No1
C++
C++の主要な実装をわかりやすく解説!GCC・Clang・MSVCの違いと特徴
No.2
Java&Spring記事人気No2
C言語
C言語を学ぶ初心者におすすめの環境構築手順【2025年版】
No.3
Java&Spring記事人気No3
C言語
C言語のソースコードとヘッダファイルの役割とは?初心者向けにわかりやすく解説!
No.4
Java&Spring記事人気No4
C言語
C言語をオンラインで実行できる便利なコンパイラサービスまとめ【初心者向け】
No.5
Java&Spring記事人気No5
C言語
C言語開発でよく使われるエディタとIDEランキング【初心者向け完全ガイド】
No.6
Java&Spring記事人気No6
C言語
Visual Studio CodeでC言語を実行する方法【拡張機能の設定と実行手順】
No.7
Java&Spring記事人気No7
C言語
C言語の列挙型(enum)の使い方を完全ガイド!初心者でもわかる基本操作
No.8
Java&Spring記事人気No8
C++
C++リンカとコンパイラのオプション設定を完全ガイド!初心者にもわかる開発環境の基礎