title: How to redefine a macro using its previous definition
body: <p>Suppose I have the following macro:</p>
  
  <pre><code>#define xxx(x) printf("%s\n",x);
  </code></pre>
  
  <p>Now in certain files I want to use an "enhanced" version of this macro without changing its name. The new version explores the functionality of the original version and does some more work.</p>
  
  <pre><code>#define xxx(x) do { xxx(x); yyy(x); } while(0)
  </code></pre>
  
  <p>This of course gives me redefition warning but why I get 'xxx' was not declared in this scope?   How should I define it properly?</p>
  
  <p>EDIT: according to this <a href="http://gcc.gnu.org/onlinedocs/gcc-3.3.6/cpp/Self_002dReferential-Macros.html" rel="noreferrer">http://gcc.gnu.org/onlinedocs/gcc-3.3.6/cpp/Self_002dReferential-Macros.html</a> it should be possible</p>