Mildly related, sort of, one can prevent expansion of variadic macros as follows:
#define printf(...)
int (printf)(const char *, ...);
I keep on seeing many random code bases just resort to #undef instead...