I have a C program below:
#define f(g,g2) g##g2
main()
{
int var12=100;
printf("%d",f(var,12));
}
when I run just the preprocessor it expands this as
{
int var12=100;
printf("%d",var12);
}
which is the reason why the output is 100.
Can anybody tell me how/why the preprocessor expands var##12 to var12
?
nothing too fancy: ##
tells the preprocessor to concatenate the left and right sides
see http://en.wikipedia.org/wiki/C_preprocessor#Token_concatenation
because ## is a token concatenation operator for the c preprocessor.
Or maybe I don't understand the question.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With