
C言語入門|#include によるソースコード分割の基本
― 大きなプログラムを整理して作る第一歩
ここまでの学習では、1つのソースファイルにすべての処理を書いてプログラムを作ってきました。
小さなサンプルであればそれでも問題ありませんが、機能が増えてくると、次のような悩みが出てきます。
- ソースコードが長くなりすぎて読みにくい。
- どこに何が書いてあるのかわからなくなる。
- 複数人で作業しようとしても、同時に編集できない。
こうした問題を解決するために欠かせないのが、
ソースコードの分割です。
C言語では、この分割を支える基本的な仕組みとして
#include 命令が用意されています。

#include を使うと何ができるのか
#include は、もともとヘッダファイルを取り込むために使ってきました。
しかし実は、#include は 任意のファイルをその場に展開する命令 です。
つまり、
- 別のソースファイルに処理を書いておき
- それを #include で取り込む
ということも可能です。
まずは、分割の仕組みを理解するために、
あえてシンプルな構成で例を見てみましょう。
分割したソースファイルの例
次の例では、処理を2つのファイルに分けています。
サンプルプログラム
sub.c
#include <stdio.h>
void sub_message(void)
{
printf("sub file called\n");
}main.c
#include <stdio.h>
#include "sub.c"
int main(void)
{
sub_message();
printf("main file finished\n");
return 0;
}この構成では、main.c の中で
sub.c の内容を #include によって取り込んでいます。
GCCでのビルド方法
GCCを使う場合、次のようにコンパイルできます。
gcc main.cこのとき、プリプロセッサは次の処理を行います。
- main.c を読み込む。
- #include "sub.c" を見つける。
- sub.c の内容をその場に展開する。
結果として、1つの大きなソースコードとしてコンパイラに渡されます。
Visual Studioでの実行手順
Visual Studio を使う場合は、次の手順でソースファイルを追加します。
- ソリューションエクスプローラーで「ソースファイル」をクリック
- 「追加」→「新しい項目」を選択
- 「FileName.cpp」を「sub.c 」に変更し「追加」をクリック
- 同様に main.c を作成
- メニューの「ビルド」→「ソリューションのビルド」を実行
- メニューの「デバッグ」→「デバッグの開始」を選択して実行
複数のソースファイルがあっても、
Visual Studio が自動的にまとめてビルドしてくれます。
< > と " " の違い
ここで、1つ気になる点が出てきます。
- stdio.h は < > で囲んでいる。
- sub.c は " " で囲んでいる。
この違いは、ファイルを探しに行く場所にあります。
#include の2つの書き方
➀ <ファイル名> の場合
#include <stdio.h>➀- コンパイラがあらかじめ決めた
インクルード用ディレクトリからファイルを探す。 - 標準ライブラリのヘッダファイルで使用する。
➁ "ファイル名" の場合
#include "sub.c"- まず、現在のソースファイルと同じディレクトリを探す。
- 見つからなければ、インクルード用ディレクトリを探す。
そのため、
- 標準で用意されているファイル → < >
- 自分で作成したファイル → " "
という使い分けが基本になります。
なぜこの方法で分業できるのか
#include による分割を使えば、
- 機能ごとにファイルを分けられる。
- 他の人が作った処理をそのまま取り込める。
- 自分の担当部分に集中して作業できる。
といった利点があります。
これが、
分業による開発効率向上の第一歩です。
ただし、ここで紹介した
「ソースファイルを直接 #include する方法」は、
あくまで仕組み理解のための導入です。
実務や本格的な開発では、
ヘッダファイルを使った分割方法へと進んでいきます。
