<tool, programming> (cpp) The standard Unix macro-expansion utility run
as the first phase of the C compiler, cc. Cpp interprets lines beginning with
"#" such as
#define BUFFER_SIZE 256
as a textual assignment giving the symbol BUFFER_SIZE a value "256".
Symbols defined with cpp are traditionally given
upper case names to distinguish them from C
identifiers. This symbol can be used later in the
input, as in
This use of cpp to name constants, rather than writing these magic numbers
inline, makes a program easier to read and maintain,
especially if there is more than one occurrence of
BUFFER_SIZE all of which must all have the same
Cpp macros can have parameters:
#define BIT(n) (1<<(n))
This can be used with any appropriate actual argument:
msb = BIT(nbits-1);
Note the parentheses around the "n" in the definition of BIT. Without
these, operator precedence might mean that the
expression substituted in place of n might not be
interpreted correctly (though the example above
would be OK).
Cpp also supports conditional compilation with the use of
constructs, where SYMBOL is a Cpp symbol which may or may not be defined
and EXPR is an arithmetic expression involving only
Cpp symbols, constants and C operators which Cpp can
evaluate to a constant at compile time.
Decus cpp is a free implementation for VMS.
The most widely used C preprocessor today is the GNU CPP, distributed as part of
cpo « cpp « cppp « C preprocessor » C
Programmer's Disease » C-Prolog » cproto