I would appreciate any donations. Wishlist or send e-mail type donations to maekawa AT daemon-systems.org.
__BUILTIN_CONSTANT_P(3) 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 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. NetBSD 7.1.2 December 19, 2010 NetBSD 7.1.2