Если macro-function
возвращает не NIL, то это макрос.
CL-USER 1 > (defmacro foo (bar) bar)
FOO
CL-USER 2 > (macro-function 'foo)
#<anonymous interpreted function 40600108FC>
Обратите внимание, что это работает для типичных глобальных макросов. Существуют также локальные и лексические макросы, символьные макросы, ...