Все из одного .h файла должно быть использовано в по меньшей мере двух .c файлах
Это правило говорит само за себя — не загромождайте область глобальных имен идентификаторами, которые не используются глобально. Если идентификатор не используется вне текущего файла, то он должен объявляться лишь в области действия текущего файла. Если этот не используемый совместно идентификатор является глобальной переменной или функцией, то он должен быть объявлен статическим.
Заметьте, что статические функции находят применение даже в Си++. Имеется тенденция помещать все основные функции, используемые любым из обработчиков сообщений, в собственно определение класса. Иногда локальная статическая функция в файле .cpp
делает эту работу так же хорошо, и нет нужды загромождать прототипом этой функции определение класса.