title: What exactly can you put after #if 0?
body: <p>According to the C language standard, the lines between <code>#if 0</code> and <code>#endif</code> are required only to contain preprocessing tokens, so most kinds of completely malformed syntax e.g. <code>#foo</code> or <code>#include [bar]</code> are allowed (silently ignored); GCC and Microsoft C++ do indeed silently ignore such.</p>
  
  <p>An <code>@</code> does not as far as I can see correspond to any preprocessing token so should still be a syntax error. GCC and Microsoft C++ silently ignore it. Is this effectively a language extension or am I missing something?</p>
  
  <p>Does anyone actually use the ability to put malformed syntax between <code>#if 0</code> and <code>#endif</code> in practice?</p>