今回は、グローバル変数を複数のファイルで共有する例をご紹介しよう。
なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.91.1)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.2) 9.4.0でコンパイルしている。
triangle.h(関数のプロトタイプ宣言)
extern int g_count;
double triangle_area(double base,double height);
triangle.c(関数の定義)
#include "triangle.h"
int g_count = 0;
double triangle_area(double base,double height)
{
g_count++;
return base * height / 2;
}
main.c
#include <stdio.h>
#include "triangle.h"
int main(void)
{
int x,y;
printf("底辺は:"); scanf("%d",&x);
printf("高さは:"); scanf("%d",&y);
double area = triangle_area(x,y);
printf("面積は%.1fです\n",area);
printf("g_countの値は%d\n",g_count);
return 0;
}
実行結果
底辺は:5
高さは:8
面積は20.0です
g_countの値は1
ここでは、先にご紹介した、「三角形の面積を求めるプログラム」にtriangle_area関数が呼ばれた回数をカウントするためのグローバル変数g_countを追加している。
グローバル変数は、triangle.cとmain.cの二つのファイルから参照されることになる。
この場合、triangle.hに、extern修飾子をつけてグローバル変数の宣言をする。
値を代入する初期化は、どれか一つのファイルに記述する。
これで、複数のファイル間でグローバル変数を共有できる。
(参考)「C言語 新版 ゼロからはじめるプログラミング」 三谷 純 (著) 翔泳社
コメント