If have encountered this claim multiple times and can't figure out what it is supposed to mean. Since the resulting code is compiled using a regular C compiler it will end up being type checked just as much (or little) as any other code.
So why are macros not type safe? It seems to be one of the major reasons why they should be considered evil.
There are situations where macros are even less type-safe than functions. E.g.
Calling this with the arguments reversed will cause truncation and erroneous results, but nothing dangerous. By contrast,
causes undefined behavior. To be fair, GCC warns about the latter, but not about the former, but that's because it knows
printf
-- for other varargs functions, the results are potentially disastrous.