title: Difference between an inline function and static inline function
body: <p>Can anybody tell me what the difference is between an inline function and static inline function?</p>
  
  <p>In which cases should I prefer static inline over inline?</p>
  
  <p>I am asking this question because I have an inline function for which I am facing compilation issues during linking (<code>relocation error:... symbol has been discarded with discarded section ...</code>). I made it a normal function and it worked. 
  Now some of my seniors told me try with static inline. 
  Below is my function:</p>
  
  <pre><code>inline void wizSendNotifier (const char* nn_name, bpDU* arg=0, int aspect = -1)
  {
     wizuiNotifier* notifier = ::wizNtrKit.getNotifier (nn_name);
     notifier-&gt;notify (arg, aspect);
  }
  </code></pre>
  
  <p>and this not inside a class. This is inside a header file!</p>
  
  <p>I guess the call to a static function should be done only in the particular TU where it is defined. </p>
  
  <p>Since my function is in a header file and if i make it static, will it be the case that where ever I include that header file the static function can used used in that translation unit?</p>