The short answer is you can't, but still there are many other ways to solve it.
first I thought about using (values) in the last sentence of macro,but in SBCL that doesn't work -- It seems equal (values) with nil.
The easier way to think is to use remove:
(remove nil '(1 2 (comment-macro (x)))))
but it may not work anytime.
the best way to do it is using condition:
(aif (comment-macro (x))
(list 1 2 it)
(list 1 2))
for the condition I have met, I just turn the situtation "I have to let it return nothing" to "with proper condition I construct proper code".I hope that works.
#=(and)
and#+(or)
are relevant (and sds's answer includes them). – Counterblow