title: Can I force an undefined macro to expand before stringification?
body: <p>Disclaimer: I have already looked at the answers to questions similar to <a href="https://stackoverflow.com/questions/2653214/stringification-of-a-macro-value">Stringification of a macro value</a>. </p>
  
  <p>Consider the following test program:</p>
  
  <pre><code>#include &lt;stdio.h&gt;
  #define QUOTE(str) #str
  #define EXPAND_AND_QUOTE(str) QUOTE(str)
  
  #define MACRO HelloWorld
  
  int main() {
      printf("%s\n", EXPAND_AND_QUOTE(MACRO));
      printf("%s\n", QUOTE(MACRO));
  
      #undef MACRO
      printf("%s\n", EXPAND_AND_QUOTE(MACRO));
      printf("%s\n", QUOTE(MACRO));
  }
  </code></pre>
  
  <p>The output of this program is:</p>
  
  <pre><code>HelloWorld
  MACRO
  MACRO
  MACRO
  </code></pre>
  
  <p>The desired output is</p>
  
  <pre><code>HelloWorld
  MACRO
  
  MACRO
  </code></pre>
  
  <p>Is there a way to <strong>redefine my macros</strong> (that is, the meta-macros which are not MACRO) to get the desired output?</p>
  
  <p>In particular, I want it to be the case that the third <code>printf</code> should be equivalent to:</p>
  
  <pre><code>printf("%s\n", QUOTE());
  </code></pre>
  
  <p>That is, I want the expansion of the undefined macro into "nothingness" and then have that "nothingness" passed to the quote function.</p>