title: Is it possible to define another preprocessor directive?
body: <p>I've been looking through <a href="http://codegolf.stackexchange.com">code golf</a> and got an idea to try this code:</p>
  
  <p><code>#define D #define</code> after adding this line, everything worked fine, however I expanded it into this:</p>
  
  <pre><code>#define D #define
  D VALUE
  </code></pre>
  
  <p>And here I got 5 compilation error. If I change <code>D</code> into <code>#define</code> everything is fine, can someone explain, why this code is illegal?</p>
  
  <p><strong>NOTE:</strong>  I used VS2008 compiler.</p>
  
  <p><strong>EDIT:</strong>  After some answers I see that I needed to give compilations error list:</p>
  
  <ol>
  <li>error C2121: '#' : invalid character : possibly the result of a macro expansion</li>
  <li>error C2146: syntax error : missing ';' before identifier 'VALUE'</li>
  <li>error C4430: missing type specifier - int assumed. Note: C++ does not support default-int</li>
  <li>error C2144: syntax error : 'void' should be preceded by ';'</li>
  <li>error C4430: missing type specifier - int assumed. Note: C++ does not support default-int</li>
  </ol>
  
  <p>First error shows that <code>D</code> is not just <code>define</code> but also includes <code>#</code>.</p>