1
#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?

Dan
  • 2,694
  • 1
  • 6
  • 19

0 Answers0