Next: , Previous: <code>__has_c_attribute</code>, Up: Conditional Syntax


4.2.9 __has_builtin

The special operator __has_builtin (operand) may be used in constant integer contexts and in preprocessor `#if' and `#elif' expressions to test whether the symbol named by its operand is recognized as a built-in function by GCC in the current language and conformance mode. It evaluates to a constant integer with a nonzero value if the argument refers to such a function, and to zero otherwise. The operator may also be used in preprocessor `#if' and `#elif' expressions. The __has_builtin operator by itself, without any operand or parentheses, acts as a predefined macro so that support for it can be tested in portable code. Thus, the recommended use of the operator is as follows:

     #if defined __has_builtin
     #  if __has_builtin (__builtin_object_size)
     #    define builtin_object_size(ptr) __builtin_object_size (ptr, 2)
     #  endif
     #endif
     #ifndef builtin_object_size
     #  define builtin_object_size(ptr)   ((size_t)-1)
     #endif