title: use _ and __ in C programs
body: <p>I was reading K&amp;R book. I read:</p>
  
  <blockquote>
    <p>...name intended for use only by functions of the standard library
    begin with <code>_</code> so they are less likely to collide with the names in
    the user program...</p>
  </blockquote>
  
  <p>What does this exactly means please explain real simple and practical way.</p>
  
  <p>What i understood is: </p>
  
  <p>if i want to use sqrt defined in math.h then </p>
  
  <pre><code>#include &lt;math.h&gt;
  #define sqrt(x) x*x*x
  
  main() 
  { 
  int x=4; 
  _sqrt(x); // That is from the header file math.h
  sqrt(x); // my own defined macro 
  /*or its the reverse way _sqrt for my own defined macro so it won't collide with original sqrt i.e. without _ for sqrt from math.h */ 
  return 0;
  }
  </code></pre>
  
  <p>Now, I read a code on stackoverflow using <code>__</code>. sys/syscall.h is not present in windows so we have to use</p>
  
  <pre><code>#if __linux 
  #include &lt;sys/syscall.h&gt;
  #elif defined(_WIN32) || defined(_WIN64)
  #include &lt;windows.h&gt;
  #endif
  </code></pre>
  
  <p>Where exactly is <code>__</code> used and what's the difference b/w <code>__</code> &amp; <code>_</code>.
      enter code here</p>