title: Macros evaluation in c programming language
body: <blockquote>
    <p><strong>Possible Duplicate:</strong><br>
    <a href="https://stackoverflow.com/questions/3534070/what-does-define-stra-a-do">What does &ldquo;#define STR(a) #a&rdquo; do?</a>  </p>
  </blockquote>
  
  
  
  <pre><code>#include &lt;stdio.h&gt;
    #define f(a,b) printf("yes")
    #define g(a)   #a
    #define h(a) g(a)
  
    int main()
    {
          printf("%s\n",h(f(1,2)));
          printf("%s\n",g(f(1,2)));
  
    }
  </code></pre>
  
  <p>Can somebody explain why output is different for both printf() statements.</p>