title: difference between extern "C" and simply extern
body: <p>I have seen C/C++ code using extern "C" declared in function signatures and also while including a C header into a CPP file.</p>
  
  <p>but some functions just declare extern before their signature(without the "C").</p>
  
  <p><strong>QN1:</strong></p>
  
  <p>are these both ways of defining functions have same effect or do they imply different things?</p>
  
  <p>sorry if I am very silly but I am not able to find this difference through Google.</p>
  
  <p>Eg:</p>
  
  <pre><code>extern int someFunction( void *ret_val);
  
  extern "C" int someFunction( void *ret_val);
  </code></pre>
  
  <p><strong>QN2:</strong></p>
  
  <p>if a function is declared with an extern in its signature, is it necessary for the corresponding header file to be included inside a extern "C" block?</p>
  
  <p>As pointed by another user in comments, the marked duplicate does not fully satisfy the question here. I am editing so that in future others may not be mislead into a different question.</p>