Whatever macros can do can be done by code without macros.<p>We do not have to invoke Turing equivalence.<p>The simpler proof is that all combinations of macros expand to code which no longer contains any macros. <i>That</i> code by definition does whatever the code-with-macros specifies.<p>(The exception might be some weird code that keeps expanding while it executes, and never finishes expanding. Then we appeal to Turing equivalence.)