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 coco
.
Today, fpp
is essentially the de facto standard Fortran preprocessor, although some compilers still invoke cpp
in traditional mode. Compilers that support cpp
or 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.