スポンサーリンク

static変数のスコープは、宣言したファイル内となる

static変数のスコープはファイル内となりますが、
サンプルコードで確認してみます。

まず、main.cにg_numをstatic変数として宣言します。
初期化も同時に行います。

func1.cにもg_numをstatic変数として宣言します。

ヘッダファイルになります。

コンパイルして実行してみます。
func1.cのfunc1()の中で、最後にg_num = 10 としましたが、
func1()を抜けたあと、main.cのmain()では、g_numは9となってprintf出力されています。

static変数のスコープが、ファイル内だと確認できました。

スポンサーリンク

extern宣言したグローバル変数も確認

extern宣言したグローバル変数も確認してみます。
参考:[c言語]extern宣言してグローバル変数を使ったサンプルコード

g_numをextern宣言します。

ヘッダファイルです。

コンパイルして実行してみます。
func1.cのfunc1()の中で、最後にg_num = 10 としましたが、
func1()を抜けたあと、main.cのmain()で、g_numが10となってprintf出力されています。
2つのファイル間で、g_numが参照されているのが確認できました。

スポンサーリンク