title: Static functions declared in "C" header files
body: <p>For me it's a rule to define and declare static functions inside source files, I mean .c files.</p>
  
  <p>However in very rare situations I saw people declaring it in the header file.
  Since static functions have internal linkage we need to define it in every file we include the header file where the function is declared. This looks pretty odd and far from what we usually want when declaring something as static.</p>
  
  <p>On the other hand if someone naive tries to use that function without defining it the compiler will complaint. So in some sense is not really unsafe to do this even sounding strange.</p>
  
  <p>My questions are: </p>
  
  <ul>
  <li>What is the problem of declaring static functions in header files?</li>
  <li>What are the risks? </li>
  <li>What the impact in compilation time? </li>
  <li>Is there any risk in runtime? </li>
  </ul>