|[ < ]||[ > ]||[ << ]||[ Up ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]|
Preprocessor directives are handled as syntactic whitespace from other code, i.e. they can be interspersed anywhere without affecting the syntactic analysis, just like comments.
The code inside macro definitions is still analyzed syntactically so that you get relative indentation there just as you'd get if the same code was outside a macro. However, since there is no hint about the syntactic context, i.e. whether the macro expands to an expression, to some statements, or perhaps to whole functions, the syntactic recognition can be wrong. CC Mode manages to figure it out correctly most of the time, though. See section 10. Syntactic Symbols, for details about the indentation.
nil, all lines inside macro definitions are analyzed as
CC Mode provides some tools to help keep the line continuation backslashes in macros neat and tidy:
With no prefix argument, it inserts any missing backslashes and aligns
them according to the
c-backslash-max-column variables. With a prefix argument, it
deletes any backslashes.
The function does not modify blank lines at the start of the region. If the region ends at the start of a line, it always deletes the backslash (if any) at the end of the previous line.
c-backslash-column specifies the minimum column for the
backslashes. If any line in the macro exceeds it then the next tab
stop from that line is used as the alignment column for all the
backslashes, so that they remain in a single column. However, if some
c-backslash-max-column then the backslashes in the
rest of the macro will be kept at that column, so that the
lines which are too long "stick out" instead.
nil. When line continuation backslashes are inserted automatically for line breaks in multiline macros, e.g. by
c-context-line-break, they are aligned with the other backslashes in the same macro if this flag is set. Otherwise the inserted backslashes are preceded by a single space.
The recommended line breaking function,
(see section 5. Text Filling and Line Breaking), is especially nice if you edit
multiline macros frequently. When used inside a macro, it automatically
inserts and adjusts the mandatory backslash at the end of the line to
keep the macro together, and it leaves the point at the right
indentation column for the code. Thus you can write code inside macros
almost exactly as you can elsewhere, without having to bother with the
|[ << ]||[ >> ]||[Top]||[Contents]||[Index]||[ ? ]|