静的変数にはファイルスコープがあります。次の2つのファイルがあるとします。
- file1.h
- file1.cpp
- file2.h
- file2.cpp
static int Var1
両方のヘッダーファイルで静的変数sayを宣言しました。file1.h
との両方file2.h
がファイルに含まれていmain.cpp
ます。
静的変数にはファイルスコープがあり、互いに競合しないため、これを行いました。しかし、コンパイル後、競合が発生していることがわかりました。
これで、静的変数は変数のように動作しextern
ます。一方、両方の.cppファイルで静的変数を宣言すると、正常にコンパイルされます。
私はこの振る舞いを理解することができません。
このシナリオでスコープとリンケージがどのように機能しているかを説明できる団体はありますか。