confusion with nested macro expansion
<p>Need explanation on the following piece of code:</p>

<pre><code>#include &lt;stdio.h&gt;

int foo(int x) {
    printf("in foo\n");
    return x;
}

int __foo(int x) {
    printf("in ___foo\n");
    int y = foo(x);
    return y + 1;
}

#define foo(x) __foo(x)
int  main()
{
    printf("=&gt; %d\n", foo(2));
    return 0;
}
</code></pre>

<p><strong>OUTPUT:</strong>
The output I received from above experiment is:</p>

<pre><code>in ___foo
in foo
=&gt; 3
</code></pre>

<p><em>Whereas I was expecting that this will result in recursion call ?</em></p>

<p><strong>EDIT:</strong> macro should be defined after definition of <code>__foo()</code></p>