C言語のきほん「グローバル変数の共有」

スポンサーリンク
C言語

今回は、グローバル変数を複数のファイルで共有する例をご紹介しよう。

なお、本プログラムは、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言語 新版 ゼロからはじめるプログラミング」 三谷 純 (著) 翔泳社

コメント

タイトルとURLをコピーしました