In the below code, what does the ## do?
#define MAKE_TYPE(myname) \\
typedef int myname ## Id; \\
The ## in a macro is concatenation. Here, MAKE_TYPE(test) will expand to : typedef int testId.
From 16.3.3 (The ## operator) :
For both object-like and function-like macro invocations, before the replacement list is reexamined for more macro names to replace, each instance of a ## preprocessing token in the replacement list (not from an argument) is deleted and the preceding preprocessing token is concatenated with the following preprocessing token