NAME
__builtin_constant_p —
GNU extension to
determine compile time constants
SYNOPSIS
int
__builtin_constant_p(
value);
DESCRIPTION
The
__builtin_constant_p() is a GNU extension for determining
whether a value is known to be constant at compile time. The function is
closely related to the concept of “constant folding” used by
modern optimizing compilers.
If the
value is known to be a compile-time constant, a
value 1 is returned. If
__builtin_constant_p() returns 0,
the
value is not a compile-time constant in the sense
that
gcc(1) was unable to determine
whether the value is constant or not.
EXAMPLES
A typical example of the use of
__builtin_constant_p()
involves a situation where it may be desirable to fold the computation if it
involves a constant, but a function call is needed otherwise. For instance,
bswap16(3) is defined in
NetBSD as:
#define bswap16(x) \
(__builtin_constant_p((x)) ? \
__byte_swap_u16_constant(x) : __BYTE_SWAP_U16_VARIABLE(x))
SEE ALSO
gcc(1),
__builtin_object_size(3),
__builtin_return_address(3)
CAVEATS
This is a non-standard, compiler-specific extension.