little_greg Опубликовано 21 ноября, 2010 Жалоба Поделиться Опубликовано 21 ноября, 2010 всем привет. у меня возникает проблема с областью видимости статических переменых (с идентификатором static), во всей литературе, что я читал написано, что их область видимости ограничивается одним файлом, но когда я создаю статическую переменную в одном файле, а потом включаю этот файл во второй, в котором создаю статическую переменную с таким же именем возникает ошибка повторного определения. пользуюсь Code::Blocks 10 и Dev-C++ 5. почему это происходит? Ссылка на комментарий Поделиться на другие сайты Поделиться
Darhazer Опубликовано 22 ноября, 2010 Жалоба Поделиться Опубликовано 22 ноября, 2010 област видимости точнее сказать ограничиваеться translation unit-ом (не знаю как ето по русски). Когда компилируете файл, из ваш .cpp файл и всех файлов, которые в #include делають один "translation unit" / .obj файл. Разница между static и extern в том, что extern можно пользувать в других unit-ов - т.е. если ви делаети .exe и .dll, в .dll static можно пользувать только в .dll, а extern - и в .exe Разница между static и не-static, что жизнь статических переменних равна жизню программи - они создаются при запуске и удаляются при окончение работи. Надеюсь вы поняли меня. Ссылка на комментарий Поделиться на другие сайты Поделиться
little_greg Опубликовано 22 ноября, 2010 Автор Жалоба Поделиться Опубликовано 22 ноября, 2010 thx 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти