/mak'roh/ [techspeak] n. A name (possibly followed by a
list) that is equated to a text or symbolic
expression to which it is to be expanded (possibly with the
substitution of actual arguments) by a macro expander. This
definition can be found in any technical dictionary; what those
won't tell you is how the hackish connotations of the term have
changed over time.
The term `macro' originated in early assemblers, which encouraged
the use of macros as a structuring and information-hiding device.
During the early 1970s, macro assemblers became ubiquitous, and
sometimes quite as powerful and expensive as HLL
s, only to fall
from favor as improving compiler technology marginalized assembler
programming (see languages of choice
). Nowadays the term is
most often used in connection with the C preprocessor, LISP, or one
of several special-purpose languages built around a macro-expansion
facility (such as TeX or UNIX's [nt]roff suite).
Indeed, the meaning has drifted enough that the collective
`macros' is now sometimes used for code in any special-purpose
application control language (whether or not the language is
actually translated by text expansion), and for macro-like entities
such as the `keyboard macros' supported in some text editors
(and PC TSR or Macintosh INIT/CDEV keyboard enhancers).