Most C preprocessor features are inactive unless you give specific directives
to request their use. (Preprocessing directives are lines starting with
`#
'; see Directives). But there are three transformations that the
preprocessor always makes on all the input it receives, even in the absence
of directives.
The first two transformations are done before nearly all other parsing and before preprocessing directives are recognized. Thus, for example, you can split a line cosmetically with Backslash-Newline anywhere (except when trigraphs are in use; see below).
/* */ # /* */ defi\ ne FO\ O 10\ 20
is equivalent into `#define FOO 1020
'. You can split even an escape
sequence with Backslash-Newline. For example, you can split "foo\bar"
between the `\
' and the `b
' to get
"foo\\ bar"
This behavior is unclean: in all other contexts, a Backslash can be inserted in a string constant as an ordinary character by writing a double Backslash, and this creates an exception. But the ANSI C standard requires it. (Strict ANSI C does not allow Newlines in string constants, so they do not consider this a problem.)
But there are a few exceptions to all three transformations.
#include
' directive in which the file name is delimited with
`<
' and `>
'.
This exception is relevant only if you use the `-trigraphs
'
option to enable trigraph processing. See Invocation.
Packaging copyright © 1988-2000 OAR Corporation
Context copyright by each document's author. See Free Software Foundation for information.