For me it\'s a rule to define and declare static functions inside source files, I mean .c files.
However in very rare situations I saw people declaring it in the header
Why would you want a both global and static function? In c, functions are global by default. You only use static functions if you want to limit the access to a function to the file they are declared. So you actively restrict access by declaring it static...
The only requirement for implementations in the header file, is for c++ template functions and template class member functions.