これまで、本ブログでご紹介してきたプログラムコードは、比較的短いものであった。
しかし、大きなプログラムになると、全体の見通しが悪くなるため、複数のファイルに分けて管理するとメリットがある。
この場合、関数の定義を一つのまとまりにして、関数が処理する内容に応じて複数のファイルに分ける方法がとられる。
まずは、一つのファイルからなるプログラムコードをみてみよう。
なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.91.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0でコンパイルしている。
//三角形の面積を求めるプログラム
//三角形の面積を求める公式「底辺×高さ÷2」
#include <stdio.h>
double triangle_area(double base,double height);
int main(void)
{
int x,y;
printf("底辺は:"); scanf("%d",&x);
printf("高さは:"); scanf("%d",&y);
double area = triangle_area(x,y);
printf("面積は%.1fです。\n",area);
return 0;
}
double triangle_area(double base,double height)
{
return base * height / 2;
}
実行結果
底辺は:5
高さは:8
面積は20.0です。
これを、3つのファイルに分けてみよう。
triangle.h(関数のプロトタイプ宣言)
double triangle_area(double base,double height);
triangle.c(関数の定義)
double triangle_area(double base,double height)
{
return base * height / 2;
}
main.c
int main(void)
{
int x,y;
printf("底辺は:"); scanf("%d",&x);
printf("高さは:"); scanf("%d",&y);
double area = triangle_area(x,y);
printf("面積は%.1fです\n",area);
return 0;
}
triangle_area関数のプロトタイプ宣言は、拡張子が.hのヘッダファイルに記述する。
main関数を定義するmain.cファイルではこのヘッダファイルをインクルードする。
triangle_area関数の実際の定義は、別のtriangle.cファイルに記述する。
二つの.cファイルは、それぞれ別々にコンパイルされ、後からリンカによって一つのプログラムファイルに統合される。
(参考)「C言語 新版 ゼロからはじめるプログラミング」 三谷 純 (著) 翔泳社
コメント