Traditional (pre-standard) C preprocessing is rather different from the preprocessing specified by the standard. When GCC is given the -traditional-cpp option, it attempts to emulate a traditional preprocessor.
GCC versions 3.2 and later only support traditional mode semantics in the preprocessor, and not in the compiler front ends. This chapter outlines the traditional preprocessor semantics we implemented.
The implementation does not correspond precisely to the behavior of earlier versions of GCC, nor to any true traditional preprocessor. After all, inconsistencies among traditional implementations were a major motivation for C standardization. However, we intend that it should be compatible with true traditional preprocessors in all ways that actually matter.