A macro is any programming or user interface in which an action can be associated with a sequence set of actions that are to be performed in its place. The term can be applied to two distinct categories of things:
user-interface macros allow the user to bind a short sequence of inputs to a longer action, like the @ command in vi.
syntactic macros occur in the source code of a program, and are used to transform or generate program code. This is the facility Lisp uses to generate new control structures. In Tcl this is accomplished prior to evaluation using commands such as string map and regsub. During evaluation, commands such as uplevel, upvar, and tailcall accomplish similar functionality.
Template and Macro processing: An inventory of Tcl (syntactic) macro systems and other text-substitution