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
The ## turns two tokens into a single token. For example:
#define DUMPINT(x) printf(#x "=%i\n", x)
printf("x" "=%i\n", x)
so when you have
you'll actually be saying
printf("mynumber" "=%i\n", mynumber)
In this example we have created a function name based on parameters to the macro.
#define DISPLAY(x, t) print ## t (#x, x)
If you call this using
it first expands to
print ## int ("i", i)
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).