Слово static в глобальной переменной не работает

Рейтинг: 0Ответов: 1Опубликовано: 11.11.2014

Вот что написано:

Последнее использование static — глобальная переменная в файле кода. В этом случае использование static указывает, что исходный код в других файлах, которые являются частью проекта, не может получить доступ к переменной. Только код внутри того же файла может увидеть переменную (её область видимости ограничена файлом). Эта техника может быть использована для моделирования объектно-ориентированного кода, потому что она ограничивает видимость переменных и таким образом помогает избежать конфликта имен.

Но это не работает. Завожу статическую переменную в отдельном заголовке (например, static int i = 0;) и свободно получаю к ней доступ из main-функции, хотя эти коды в разных файлах. В чем подвох?

Ответы

▲ 5Принят

Если вы объявляете static int i = 0; в заголовочном файле, а потом подключаете этот файл в двух модулях, то глобальная переменная i будет в обоих модулях, но для каждого модуля своя. Переменную нужно объявлять не в заголовочном файле, а именно в нужном модуле.