title: What does ##__VA_ARGS__ mean?
body: <p>I would like to know what <code>##</code> does in this macro definition:</p>
  
  <pre><code>#define debug(M, ...) fprintf(stderr,M "\n",##__VA_ARGS __)
  </code></pre>
  
  <p>I googled for an answer and I came up with the following.</p>
  
  <p>The <code>##</code> will remove the comma if no variable arguments are given to the macro.  So, if the macro is invoked like this</p>
  
  <pre><code>debug("message");
  </code></pre>
  
  <p>with no quotes, it is expanded to</p>
  
  <pre><code>fprintf(stderr,"message");
  </code></pre>
  
  <p>not</p>
  
  <pre><code>fprintf(stderr,"message",);
  </code></pre>
  
  <p>Why is the comma removed?</p>