add function expandmacro