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