The C preprocessor is a separate text-replacement language, run before the C compiler.
With it, one defines
- symbols whose values are strings
- macros, which replace function-looking strings
facilities
- include outside (“header”) files into current file
- conditionally cut out text based on value of a symbol
- replace defined symbols and macros
- concatenate strings