Статическая переменная в файле заголовка

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

  • file1.h
  • file1.cpp
  • file2.h
  • file2.cpp

Я объявил статическую переменную say static int Var1 в оба файла заголовков. И file1.h , и file2. Но после компиляции я обнаружил, что он показывает конфликт.

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

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

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

8
задан jww 20 February 2018 в 16:17
поделиться