title: What this trick is?
body: <pre><code>#include &lt;stdio.h&gt;
  #define PRINT(name) print ## name()
  
  void printHE()
  {
      printf("Hello");
  }
  void printWO()
  {
      printf("World\n");
  }
  
  
  enum {
      HE,
      WO,
  };
  
  int main()
  {
      PRINT(HE);
      PRINT(WO);
  }
  </code></pre>
  
  <p>It works perfectly, but why? </p>
  
  <p>What does <code>##</code> in <code>#define</code> mean?</p>
  
  <p>And why <code>HE</code> didn't convert to <code>0</code> ?</p>