I'm not saying that macros are in the "global scope" category.

Googler states, if I am understanding correctly, that only global variables (not macros) can conflict with implementation defined naming conventions. So, if the implementation defines the following:

__setupSomething

If I define a global like follows:

int __setupSomething;

This should cause conflicts, as the implementation has reserved that name. Now, if I do this:

#define __setupSomething

This is no different, it will still conflict. The fact that a macro respects no scope means that it will conflict with implementation reserved names just as much as a global would.