title: What's the exact step of macro expanding?
body: <p>This doesn't work as expected:</p>
  
  <pre><code>#define stringify(x) #x  
  printf("Error at line " stringify(__LINE__));
  </code></pre>
  
  <p>This works:</p>
  
  <pre><code>#define stringify1(x) #x  
  #define stringify(x) stringify1(x)  
  printf("Error at line " stringify(__LINE__));  
  </code></pre>
  
  <p>What's the priority that preprocess uses to expand such macros?</p>