Интересно, как использовать ключевое слово static
как ограничение по объему для переменных в файле, в C.
Стандартный способ создания программы на C, как я вижу, заключается в следующем:
- есть куча c файлов, определяющих функции и переменные, возможно, область ограничена
static
. - есть куча h файлов, объявляющих функции и, возможно, переменные соответствующего c файла, для других файлов c. Частные функции и переменные не публикуются в файле h.
- каждый файл c скомпилирован отдельно в файл o.
- все файлы o связаны между собой файлом приложения.
Я вижу две причины для объявления gobal как static
, если переменная не публикуется в h файле:
- один для удобства чтения. Информируйте будущих читателей, включая меня, что переменная недоступна в любом другом файле.
- второй заключается в том, чтобы другой файл c не обновлял переменную как
extern
. Я полагаю, что компоновщику будет не нравиться переменная, являющаяся какextern
, так иstatic
. (Мне не нравится идея обновления файла переменной, принадлежащей кому-либо, какextern
, это нормально?)
Любая другая причина?
То же самое относится к функциям static
. Если прототип не опубликован в файле h, другие файлы могут вообще не использовать эту функцию, поэтому зачем вообще определять его static
?
Я вижу две причины, но не более.