Перейти к содержанию
СофтФорум - всё о компьютерах и не только

область видимости в с++


Рекомендуемые сообщения

всем привет. у меня возникает проблема с областью видимости статических переменых (с идентификатором static), во всей литературе, что я читал написано, что их область видимости ограничивается одним файлом, но когда я создаю статическую переменную в одном файле, а потом включаю этот файл во второй, в котором создаю статическую переменную с таким же именем возникает ошибка повторного определения. пользуюсь Code::Blocks 10 и Dev-C++ 5. почему это происходит?

Ссылка на комментарий
Поделиться на другие сайты

област видимости точнее сказать ограничиваеться translation unit-ом (не знаю как ето по русски).

Когда компилируете файл, из ваш .cpp файл и всех файлов, которые в #include делають один "translation unit" / .obj файл.

Разница между static и extern в том, что extern можно пользувать в других unit-ов - т.е. если ви делаети .exe и .dll, в .dll static можно пользувать только в .dll, а extern - и в .exe

Разница между static и не-static, что жизнь статических переменних равна жизню программи - они создаются при запуске и удаляются при окончение работи.

Надеюсь вы поняли меня.

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...