COOL BRO THIS IS A GOOD SOLN

On Tue, Apr 5, 2011 at 4:10 PM, Azhar Hussain <azhar...@gmail.com> wrote:

> Few Important things about macros, before I explain the output
> 1. Macros are replaced in passes.
>  2. Macros are not recursive.
>
> regarding the output remember the rule for expansion
> "A parameter in the replacement list, *UNLESS* preceded by a # or ##
> preprocessing token or followed by a ## preprocessing token, is replaced by
> the  corresponding argument after all macros contained therein have been
> expanded".
> In other words, macros are replaced "inside out" unless # or ## exists
>
> printf("%s",g(f(1,2)));  is replaced as #f(1,2) ---> "f(1,2)" according to
> the replacement rule.
> printf("\t%s",h(f(1,2)));  As this does not replace with # or ## directly,
> "inside out" expansion leads to h("1,2") --> g('1,2") --> "1,2"
>
> for the first pass
> printf("%s", "f(1,2)");  ---> g(a) #a
> printf("\t%s", h("1,2"));
>
> second pass
> printf("%s", "f(1,2)");  ---->> not processed(exhausted)
> printf("\t%s", g("1,2")); --> h(a) g(a)
>
> Third pass
>  printf("%s", "f(1,2)");  ---->> not processed(exhausted)
> printf("\t%s", "1,2");  --> g(a) #a
>
>
> Hope this answers your question.
>
> -
> Azhar.
>
>
>
>
> On Tue, Apr 5, 2011 at 3:22 PM, Vandana Bachani <vandana....@gmail.com>wrote:
>
>> Hi Arvind,
>> These are preprocessor specific operators. Check out
>> http://msdn.microsoft.com/en-us/library/wy090hkc(v=vs.80).aspx
>>
>> -Vandana
>>
>> On Tue, Apr 5, 2011 at 12:45 PM, Arvind <akk5...@gmail.com> wrote:
>>
>>> #include<stdio.h>
>>>
>>> #define f(a,b) a##b
>>> #define g(a) #a
>>> #define h(a) g(a)
>>>
>>> int main()
>>> {
>>> printf("%s",g(f(1,2)));
>>> printf("\t%s",h(f(1,2)));
>>> return 0;
>>> }
>>>
>>>
>>>
>>> i have run this program in gcc compiler and getting : f(1,2) 12 as
>>> output.
>>> can anyone explain the reason for getting this output?
>>>
>>> --
>>> You received this message because you are subscribed to the Google Groups
>>> "Algorithm Geeks" group.
>>> To post to this group, send email to algogeeks@googlegroups.com.
>>> To unsubscribe from this group, send email to
>>> algogeeks+unsubscr...@googlegroups.com.
>>> For more options, visit this group at
>>> http://groups.google.com/group/algogeeks?hl=en.
>>>
>>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Algorithm Geeks" group.
>> To post to this group, send email to algogeeks@googlegroups.com.
>> To unsubscribe from this group, send email to
>> algogeeks+unsubscr...@googlegroups.com.
>> For more options, visit this group at
>> http://groups.google.com/group/algogeeks?hl=en.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Algorithm Geeks" group.
> To post to this group, send email to algogeeks@googlegroups.com.
> To unsubscribe from this group, send email to
> algogeeks+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/algogeeks?hl=en.
>



-- 
Arpit Bhatnagar
(MNIT JAIPUR)

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algogeeks@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to