Каждый исходный файл составляется индивидуально. Теперь, когда вы объявляете отдельно в их исходных файлах, каждый исходный файл не знает о существовании другой статической переменной, присутствующей в другом исходном файле с таким же именем. Таким образом, компилятор не сообщает об ошибке. Вы можете пометить его как extern, если вы хотите, чтобы переменная была разделена между исходными файлами.

ческая переменная имеет область видимости файла. Скажем, у меня есть два следующих файла:

file1.hfile1.cppfile2.hfile2.cpp

Я объявил статическую переменную сказатьstatic int Var1 в обоих заголовочных файлах. Обеfile1.h а такжеfile2.h включены вmain.cpp файл.

Я сделал это, поскольку статическая переменная будет иметь область видимости файла, поэтому она не будет конфликтовать друг с другом. Но после компиляции я обнаружил, что это показывает конфликт.

Теперь статическая переменная ведет себя какextern переменная. С другой стороны, если я объявляю статическую переменную в обоих файлах .cpp, она хорошо компилируется.

Я не могу понять это поведение.

Может ли кто-нибудь объяснить, как работает область действия и связь в этом сценарии.

Ответы на вопрос(3)

Ваш ответ на вопрос