@makaleks

Почему static и namespace не ограничивают область видимости?

"Если глобальная переменная объявлена со спецификатором static, то область видимости этой переменной ограничена одним файлом"

Но на практике этого не происходит. Я могу получить доступ к статической глобальной переменной или к переменной из неименованного пространства имён из main(), стоит только вбить этот файл в #include

Почему не выходит?
Как правильно?

Visual Studio 2010
  • Вопрос задан
  • 2545 просмотров
Решения вопроса 3
@lookid
препроцессор компилятора с++ заменяет #include на содержимое файла, который написан в <...> или "...". Если хотите ограничить область видимости, то пишите реализацию в срр, а не в h.
Ответ написан
@Lol4t0
Дело в том, что спецификатор static ограничивает область видимости не одним файлом, а единицей трансляции

В языках программирования Си и Си++ единица трансляции (англ. translation unit) — подаваемый на вход компилятора исходный текст (файл с расширением .c или .cpp) со всеми включёнными в него файлами.
Ответ написан
Комментировать
Taraflex
@Taraflex
Ищу работу. Контакты в профиле.
static не ограничивает область видимости, оно указавает на то, что данная переменная будет существовать в единственном экземпляре.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Trrrrr
@Trrrrr
Слово статик имеет множество значений.
Вот прочитайте описание тут например:
msdn.microsoft.com/ru-ru/library/s1sb61xd.aspx
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы