Nvm, I found the solution: Use esc(name) to prevent mangling.
So do
macro printing(ex)
def = splitdef(ex)
name = def[:name]
internal_name = gensym()
def[:name] = internal_name
out = quote
$(combinedef(def))
$(esc(name)) = printinput($internal_name)
end
return out
end
for the macro