Andrii , просвети пожалуйста в статические функции в Си. Говорят , что они видны только в том файле в котором определены , но если я объявлю её прототип в .h-файле и буду подключать где хочу , то ..... Какой тогда смысл? И вообще когда они являются необходимыми и нужными?
Ну... (1) в Си не рассматривают файлы из-за #include, обычно говоря про единицу трансляции. (2) статическая переменная будеи уникальной для каждой единицы трансляции. Если у тебя статическая переменная объявлена в хидере, что делать непонятно зачем, и хидер подключается в трёх единицах трансляции, то у тебя просто будет три разных переменных
static обычно не используется в хидерах (за исключнием static inline когда функция определяется в том же хидере), а обычно используют чтобы избежать конфликта имён. Например, я могу в своём файое объявить функцию
static int client_count(void)
не боясь, что где-то в другом месте будет объявнена функция c тем же именем, и будет ошибка линковки, например (функция объявлена в двух местах, не знаю, что выбрать).