title: When using standard C functions in C++, is the "std::" prefix required?
body: <p>When use standard C function in C++, should we prefix every function with <code>std::</code>?</p>
  
  <p>for example (file name: <code>std.C</code>):</p>
  
  <pre><code>#include &lt;cstdio&gt;
  
  int main() {
    std::printf("hello\n");
    printf("hello\n");
  }
  </code></pre>
  
  <p>This file can be compiled with: </p>
  
  <pre><code>g++ -Wall -Werror -std=c++11 std.C
  </code></pre>
  
  <p>without any error.</p>
  
  <p>my questions are:</p>
  
  <ol>
  <li>Should we always place <code>std::</code> before all the standard C library functions when they are used in C++?</li>
  <li>What's the main difference between header files like <code>&lt;stdio.h&gt;</code> and <code>&lt;cstdio&gt;</code>?</li>
  </ol>