Есть ли способ сделать переменную в C доступной только для файла, в котором она была объявлена? - PullRequest
0 голосов
/ 18 сентября 2011

Есть ли способ сделать переменную в C доступной только для файла, в котором она была объявлена?

Я спрашиваю об этом, потому что я помню, как где-то читал, что это можно сделать, но я действительно не могу вспомнить, как это сделать. Это возможно, или я просто воображаю?

Ответы [ 4 ]

3 голосов
/ 18 сентября 2011

Объявите его как статический глобал.

static int foo;
int incrementfoo()
{
    return ++foo;
}
1 голос
/ 18 сентября 2011

Использование ключевого слова static даст глобальную переменную внутренней связи, означающую, что имя не будет видимым для других единиц перевода.Тем не менее, обратите внимание, что это отличается от того, что вы просили:

  • Имя может все еще быть доступным из других файлов , включенных в ту же единицу перевода (файлы, включенные через #include директива).
  • Переменная может по-прежнему вызываться другими модулями перевода (модулями) в вашей программе, если они могут получить ее адрес, например, если есть функция в том же модуле перевода, что и ваш staticпеременная, которая возвращает указатель на нее.
1 голос
/ 18 сентября 2011

Ключевое слово static делает это; В отличие от этого, ключевое слово extern позволяет импортировать другие переменные из других файлов.

1 голос
/ 18 сентября 2011

статическое слово, которое вы ищете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...