title: What is the meaning of lines starting with a hash sign and number like '# 1 "a.c"' in the gcc preprocessor output?
body: <p>I print out the output of C preprocessor by using</p>
  <pre><code>gcc -E a.c
  </code></pre>
  <p>The output contains many lines like</p>
  <pre><code># 1 &quot;a.c&quot;
  # 1 &quot;&lt;built-in&gt;&quot;
  # 1 &quot;&lt;command-line&gt;&quot;
  # 1 &quot;a.c&quot;
  # 1 &quot;c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h&quot; 1 3
  # 19 &quot;c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h&quot; 3
  # 1 &quot;c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h&quot; 1 3
  # 31 &quot;c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h&quot; 3
         
  # 32 &quot;c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/_mingw.h&quot; 3
  # 20 &quot;c:\\mingw\\bin\\../lib/gcc/mingw32/4.5.0/../../../../include/stdio.h&quot; 2 3
  </code></pre>
  <p>I've never seen this kind of syntax in C. Can someone explain what this is doing?</p>