fall and fall

二次創作、作詞、ゲームのことなどを書いています。

C言語 別ファイルの変数を使う方法(externとグローバル変数)

C言語でファイルを分割した際に、別のファイルの変数を使う方法を書いていきます。

1. ヘッダファイルを使う方法

main.c から、別ファイルの変数 sum にアクセスする例を記載します。

1.1. アクセスされる側の実装

ヘッダファイルで、extern の変数を宣言します。

calc.h

#ifndef _CALC_H_
#define _CALC_H_

extern int sum;

void add(int a, int b);

#endif

ソースファイルで、グローバル変数を定義します。

calc.c

#include "calc.h"

int sum;

void add(int a, int b) {
  sum = a + b;
}

1.2. アクセスする側の実装

ヘッダファイルをインクルードして、グローバル変数を使用します。

main.c

#include <stdio.h>
#include "calc.h"

int main() {
  add(1, 2);
  printf("1+2=%d\n", sum);
  return 0;
}

2. ヘッダファイルを使わない方法

上の方法が一般的ですが、ヘッダファイルを使ずにアクセスすることもできます。

2.1. アクセスされる側の実装

グローバル変数 sum を定義します。

calc.c

int sum;

void add(int a, int b) {
  sum = a + b;
}

2.2. アクセスする側の実装

extern宣言をして、上のグローバル変数を使用します。

main.c

#include <stdio.h>

extern int sum;

int main() {
  add(1, 2);
  printf("1+2=%d\n", sum);
  return 0;
}

3. 実行結果

上の 1 と 2 の実行結果は同じで、以下の文字列が出力されます。

1+2=3