This is a bit pedantic, but...
Many people's experiences with macros are through C. C macros are not syntactic abstraction, but some sort of lexical expansion that introduced syntactic confusion.
I get this is not the case in many languages now but for most popular languages macros are "throw appended strings into eval/C preprocessors"