スポンサーリンク
関数の外に変数を宣言
int型の変数g_numを、sample.cとfunc1.cで共有する場合を
サンプルコードにしてみたいと思います
まず、sample.cの関数の外で、int型の変数g_numを宣言します。
同時に、初期化も行っておきます。
$ cat sample.c #include <stdio.h> #include "func1.h" int g_num = 9; int main(){ func1(); printf("main : g_num=%d\n", g_num); return 0; }
スポンサーリンク
別ファイルに共有したい変数をextern宣言
続いて、func1.cの関数の外に、g_numをint型でextern宣言します。
これで、main()とfunc1()でg_numが共有できます。
$ cat func1.c #include <stdio.h> #include "func1.h" extern int g_num; void func1(){ printf("func1: g_num=%d\n", g_num); g_num++; return; }
下記がfunc1.hになります。
$ cat func1.h #ifndef FUNC1_H #define FUNC1_H void func1(); #endif
コンパイルして実行してみます。
main.cで初期化したg_numが、func1()内でも共有されています。
また、func1()で変更されたg_numが、main()でも引き継がれてるのが確認できます。
$ gcc -o sample sample.c func1.c $ ./sample func1: g_num=9 main : g_num=10
スポンサーリンク