A macro is a programming construct. That is, they are aid to making better professional programs. A macro is expanded at assemble time, and thus it incurs none of the overhead of a function.
A macro has a serious liability, namely: the danger of using registers that may be in use by the caller of that macro.
The sample macro available here demonstrates macros without passed parameter, with passed integer parameters, and with passed float parameters. Also, there are example of macro which return no data, and other macros that do return data. There is a macro of every kind here.