nice explanation

On Apr 9, 1:15 pm, ArPiT BhAtNaGaR <arpitbhatnagarm...@gmail.com>
wrote:
> 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