Avoid multiple evaluation, variable capture, and unreadable expansions.
The most common macro bugs are not “syntax bugs.” They are semantic bugs: the macro expansion evaluates something more times than you intended, or it introduces names that collide with the caller’s code.
Watch for:
If you cannot explain the expansion clearly, it is usually a sign the macro is too big.