Contents|Index|Next

Overview of the C Preprocessor

The C preprocessor is a macro processor that is used automatically by the C compiler to transform your program before actual compilation. It is called a macro processor because it allows you to define macros, which are brief abbreviations for longer constructs.

The C preprocessor provides the following four separate facilities that you can use as you see fit.

- Inclusion of header files
  These are files of declarations that can be substituted into your program.
- Macro expansion
  You can define macros, which are abbreviations for arbitrary fragments of C code, and then the C preprocessor will replace the macros with their definitions throughout the program.
- Conditional compilation
  Using special preprocessing directives, you can include or exclude parts of the program according to various conditions.
- Line control
  If you use a program to combine or rearrange source files into an intermediate file which is then compiled, you can use line control to inform the compiler of each source line’s origin.

C preprocessors vary in some details. This manual discusses the GNU C preprocessor, the C Compatible Compiler Preprocessor. The GNU C preprocessor provides a superset of the features of ANSI Standard C.

ANSI Standard C requires the rejection of many harmless constructs commonly used by today’s C programs. Such incompatibility would be inconvenient for users, so the GNU C preprocessor is configured to accept these constructs by default.

To get ANSI Standard C, you must use the options -trigraphs, -undef and -pedantic, but in practice the consequences of having strict ANSI Standard C make it undesirable to do this. See Invoking the C Preprocessor.