1. 程式人生 > >Static修飾的變數定義在標頭檔案(.h)中的影響

Static修飾的變數定義在標頭檔案(.h)中的影響

static修飾的全域性變數的作用範圍會被限制在宣告的原始檔內。

舉個例子, 

a.c

b.c

c.h

其中c.h被a.c,b.c引用, 而且c.h中定義了:

static int test = 0;

在編譯的時候,a.c會和c.h一起編譯, 然後b.c也會和c.h一起編譯, 但是要注意, 編譯器分別編譯這兩組檔案的時候, 變數test會分別分配地址, 然後初始值也都為0;

這就意味著, 在a.c中如果呼叫了test, 其初始值為0;假設在a.c中test隨後被修改為了2, 然後b.c中也呼叫test,這時test的初始值還是0, 而不是2!