Как правило, вы не должны помещать статические функции в заголовочные файлы. В одноразовой программе это, вероятно, не повредит ничему, кроме увеличения размера вашего кода, потому что у вас есть избыточная копия в каждом модуле. В общей библиотеке это может легко вызвать ошибки, потому что теперь часть вашей библиотеки встроена в вызывающие ее библиотеки, поэтому несоответствия версий могут легко возникнуть.
Если у вас есть какая-то ужасно критичная по времени функция, в которой время, потраченное на вызов функции, имеет значение, вы можете подумать о том, чтобы поместить его в заголовок, но в этом случае (a) вы, вероятно, захотите объявить его как хорошо, и (б) вы уже выполнили все другие оптимизации, которые вы можете найти.
Короче говоря, если вы не знаете, вне всяких сомнений, что вам нужна статическая функция в заголовочном файле ... вам не нужна статическая функция в заголовочном файле; вам нужна нестатическая функция в файле .c с заголовком в .h.