Preprocessors serve multiple purposes, including conditional-compilation, macros for code simplification, and inclusion of additional source files. Fortran originally had no proper preprocessor, so it became common to use
cpp. However, cpp is not fully compatible with Fortran source, so Sun developed
fpp, a Fortran-compatible version of
cpp. Around the same time, Fortran 95 defined an optional conditional-compilation preprocessor, called
fpp is essentially the de facto standard Fortran preprocessor, although some compilers still invoke
cpp in traditional mode. Compilers that support
fpp usually support Predefined preprocessor macros that aid compiler-specific code requirements. Although
coco is an official standard, it is generally not supported directly by Fortran compilers, and therefore loses the benefit of compiler-defined preprocessor tokens.