Статическая переменная имеет файловую область. Скажем, у меня есть два следующих файла:
- файл1.h
- файл1.cpp
- файл2.h
- файл2.cpp
Я объявил статическую переменную, скажем, static int Var1
в обоих файлах заголовков. И file1.h
, и file2.h
включены в файл main.cpp
.
Я сделал это, поскольку статическая переменная будет иметь файловую область, поэтому она не будет конфликтовать друг с другом. Но после компиляции я обнаружил, что он показывает конфликт.
Теперь статическая переменная ведет себя как переменная extern
. С другой стороны, если я объявлю статическую переменную в обоих файлах .cpp, она хорошо скомпилируется.
Я не могу понять это поведение.
Может ли кто-нибудь объяснить, как масштаб и связь работают в этом сценарии.