GNU C performs preprocessing on each line of a C program as the first stage of compilation. Preprocessing operates on a line only when it contains a preprocessing directive or uses a macro—all other lines pass through preprocessing unchanged.
Here are some jobs that preprocessing does. The rest of this chapter gives the details.
#pragma
and _Pragma
invoke
some special compiler features in how to handle certain constructs.
Except for expansion of predefined macros, all these operations happen only if you use preprocessing directives to request them.
Preprocessing does not recognize the operators of the C language
itself, outside of the operand of the #if
directive
(see The #if
directive). However, it supports three preprocessing
operators of its own: #
(see Stringification), ##
(see Concatenation) and defined
(see The #if
directive).