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