The C preprocessor provides a number of useful facilities which extend the underlying compiler. For instance, the preprocessor is responsible for finding header files in #include directives and for expanding the macros set using #define.
In many implementations the C preprocessor is a separate program from the C compiler. However, the CrossWorks C compiler has an integrated preprocessor which makes compilations faster.