little_greg Posted November 21, 2010 Report Share Posted November 21, 2010 всем привет. у меня возникает проблема с областью видимости статических переменых (с идентификатором static), во всей литературе, что я читал написано, что их область видимости ограничивается одним файлом, но когда я создаю статическую переменную в одном файле, а потом включаю этот файл во второй, в котором создаю статическую переменную с таким же именем возникает ошибка повторного определения. пользуюсь Code::Blocks 10 и Dev-C++ 5. почему это происходит? Link to comment Share on other sites More sharing options...
Darhazer Posted November 22, 2010 Report Share Posted November 22, 2010 област видимости точнее сказать ограничиваеться translation unit-ом (не знаю как ето по русски). Когда компилируете файл, из ваш .cpp файл и всех файлов, которые в #include делають один "translation unit" / .obj файл. Разница между static и extern в том, что extern можно пользувать в других unit-ов - т.е. если ви делаети .exe и .dll, в .dll static можно пользувать только в .dll, а extern - и в .exe Разница между static и не-static, что жизнь статических переменних равна жизню программи - они создаются при запуске и удаляются при окончение работи. Надеюсь вы поняли меня. Link to comment Share on other sites More sharing options...
little_greg Posted November 22, 2010 Author Report Share Posted November 22, 2010 thx 1 Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now