Next: Objective-C Method Symbols, Previous: Literal Symbols, Up: Syntactic Symbols [Index]
Multiline preprocessor macro definitions are normally handled just like
other code, i.e. the lines inside them are indented according to the
syntactic analysis of the preceding lines inside the macro. The first
line inside a macro definition (i.e. the line after the starting line of
the cpp directive itself) gets cpp-define-intro
. In this example:
1: #define LIST_LOOP(cons, listp) \ 2: for (cons = listp; !NILP (cons); cons = XCDR (cons)) \ 3: if (!CONSP (cons)) \ 4: signal_error ("Invalid list format", listp); \ 5: else
line 1 is given the syntactic symbol cpp-macro
. The first line
of a cpp directive is always given that symbol. Line 2 is given
cpp-define-intro
, so that you can give the macro body as a whole
some extra indentation. Lines 3 through 5 are then analyzed as normal
code, i.e. substatement
on lines 3 and 4, and else-clause
on line 5.
The syntactic analysis inside macros can be turned off with
c-syntactic-indentation-in-macros
(see Custom Macros). In
that case, lines 2 through 5 would all be given cpp-macro-cont
with an anchor position pointing to the #
which starts the cpp
directive41.
See Custom Macros, for more info about the treatment of macros.