靜態變量具有文件範圍。說我有兩個以下文件:
頭文件中的靜態變量
- file1.h
- file1.cpp
- file2.h
- file2.cpp
我已經聲明爲static變量都表示static int Var1
頭文件。 main.cpp
文件中包含file1.h
和file2.h
。
我這樣做,因爲靜態變量將具有文件範圍,所以它不會相互衝突。 但編譯後,我發現它顯示衝突。
現在靜態變量的行爲如同extern
變量。另一方面,如果我在.cpp文件中聲明瞭靜態變量,它編譯得很好。
我無法理解此行爲。
任何機構都可以解釋在這種情況下工作範圍的範圍和連接方式。
相關的,請參見[不要在頭文件中定義一個未命名的名稱空間](https://wiki.sei.cmu.edu/confluence/display/cplusplus/DCL59-CPP.+Do+not+define+an+未命名+名稱空間+中的+ a +標題+文件) – jww 2018-02-20 16:47:14