title: What does extern inline do?
body: <p>I understand that <code>inline</code> by itself is a suggestion to the compiler, and at its discretion it may or may not inline the function, and it will also produce linkable object code.</p>
  
  <p>I think that <code>static inline</code> does the same (may or may not inline) but will not produce linkable object code when inlined (since no other module could link to it).</p>
  
  <p>Where does <code>extern inline</code> fit into the picture?</p>
  
  <p>Assume I want to replace a preprocessor macro by an inline function and require that this function gets inlined (e.g., because it uses the <code>__FILE__</code> and <code>__LINE__</code> macros which should resolve for the caller but not this called function). That is, I want to see a compiler or linker error in case the function does not get inlined. Does <code>extern inline</code> do this? (I assume that, if it does not, there is no way to achieve this behavior other than sticking with a macro.)</p>
  
  <p>Are there differences between C++ and C?</p>
  
  <p>Are there differences between different compiler vendors and versions?</p>