title: Variadic macro with empty argument in c++11
body: <p>An old header of mine contains a variadic macro that allows for 0 arguments.  When compiled against C++11 with gcc 4.7.3 the <code>##</code> token no longer seems to remove the preceding comma.</p>
  
  <pre><code>#define FOOCRO(...) printf("42\n", ## __VA_ARGS__)
  
  int main(){
      FOOCRO(); // dumped from gcc -E: printf("42\n",); //comma still in place
      return 0;
  }
  </code></pre>
  
  <p>I thought it might be a spacing issue but placement of <code>##</code> doesn't seem to have any effect on comma removal.</p>
  
  <p><strong>Edit</strong>:</p>
  
  <p>Lest I get dinged for some perceived mis-use of a hated feature, this is the source macro I simplified for this question:</p>
  
  <pre><code>#define LOG(...) Logger::Write(__FILE__,__LINE__, ##__VA_ARGS__)
  </code></pre>
  
  <p>I've yet to come across a less "evil" way of doing debugging short of writing all that cruft every time I insert a debug statement.</p>