#define mytype __mytype
#define f1(in)\
call##in
f1(mytype)
Doing gcc -E file.c outputs callmytype.
Adding a new macro in between changes the output:
#define mytype __mytype
#define f1(in)\
call##in
#define f2(in)\
f1(in)
f2(mytype)
outputs call__mytype.
I'm guessing the pre-processor doesn't replace mytype with __mytype when it's being passed as a parameter? Parameters are matched as is without a change?