I have a macro defined in C something like this:
#define SOME_FIELD(_A_,_B_,_C_) \
MyObj[ ## _A_ ## ].somePTR = \
(DWORD_PTR) (buff_ ## _C_ ## _C_ ## _ ## _B_ ## );
What i can understand that for index A we are getting some value for “somePTR”. My question is, What is ## <name> ## notation for and with this how value of somePTR is calculated??
I am new to such a macro so a descriptive explanation would be very helpful.
That is called token concatenation. It allows you to glue arguments together.
For your example,
SOME_FIELD(Param1,Param2,Param3);expands like this:It’s easy enough to try this out yourself by using your compiler’s pre-processor. You don’t generally need to go to the trouble of writing a fully-fledged C program—the pre-processor can generally be invoked by itself.