But that's the kind of thing I addressed in my ancestor comment: a classic problem with different names clashing. You solve that by putting the translation unit boundaries somewhere else, or by undefining. Nothing else is pointed our in the Stackoverflow post appearing in your posted search query.

It sounds a bit like some people have poor macro hygiene. I thought it's standard to just undefine all macros immediately after use.