title: Error pasting ""HELLO"" and ""WORLD"" does not give a valid preprocessing token
body: <p>This is the faulty code</p>
  
  <pre><code>#include&lt;stdio.h&gt;
  
  #define CAT_I(A, B)         A ## B
  #define CAT(A, B)           CAT_I(A,B)
  
  void main (void)
  {
          printf(CAT("HELLO","WORLD"));
  }
  </code></pre>
  
  <p>Why it gives that error? How could I fix it?</p>
  
  <p><strong>EDIT</strong></p>
  
  <p>This is what I am trying to do</p>
  
  <pre><code>#define TAG                   "TAG"
  #define PRE                   CAT(CAT("&lt;",TAG),"&gt;")  
  #define POS                   CAT(CAT("&lt;/",TAG),"&gt;") 
  
  #define XML      CAT(CAT(PRE,"XML SOMETHING"),POS)   
  </code></pre>
  
  <p>then</p>
  
  <pre><code>printf(XML); 
  </code></pre>