Next: <code>__has_include</code>, 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