The operators # and ## are ANSI-C (at least according to my book they are)
The # precedes a parameter name. It causes double quotes to be placed around the argument substituted for the parameter. For example
Code:
#define DUMPINT(x) printf(#x "=%i\n", x)
becomes....
printf("x" "=%i\n", x)
so when you have
DUMPINT(mynumber)
you'll actually be saying
printf("mynumber" "=%i\n", mynumber)
The ## turns two tokens into a single token. For example:
Code:
#define DISPLAY(x, t) print ## t (#x, x)
If you call this using
DISPLAY(i, int)
it first expands to
print ## int ("i", i)
then to
printint("i",i)
In this example we have created a function name based on parameters to the macro.
I don't expect this type of code is used much at *newbie* level. It serves to confuse until you are comfortable with C in general (imho).