__BUILTIN_CONSTANT_P(3) NetBSD Library Functions Manual__BUILTIN_CONSTANT_P(3)
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 com-
pile-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 situa-
tion 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.
NetBSD 5.0 December 19, 2010 NetBSD 5.0
