Unix/Linux Go Back    


NetBSD 6.1.5 - man page for __builtin_types_compatible_p (netbsd section 3)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


__BUILTIN_TYPES_COMPATIBLE_P(3)    BSD Library Functions Manual   __BUILTIN_TYPES_COMPATIBLE_P(3)

NAME
     __builtin_types_compatible_p -- GNU extension to check equivalent types

SYNOPSIS
     int
     __builtin_types_compatible_p(type_a, type_b);

DESCRIPTION
     The __builtin_types_compatible_p() is a GNU extension for determining whether two types are
     equivalent.  If type_a is equivalent to type_b, a value 1 is returned.  Otherwise
     __builtin_types_compatible_p() returns 0.

     The following remarks should be taken into account.

	   1.	The architecture-specific size of the two types does not have an impact on the
		result.  For example, sizeof(char *) and sizeof(int) result the same value on
		i386, but the types naturally are not equivalent.

	   2.	Type qualifiers are ignored.  The function returns the same value for long and
		const long.

	   3.	The amount of pointer indirection affects the result.  For example, double * is
		not equivalent to double **.

	   4.	Two types defined with typedef are equivalent if and only if their underlying
		types are equivalent.

	   5.	The enum type is a special case in that two enum types are not considered equiva-
		lent.

EXAMPLES
     The following example combines __builtin_types_compatible_p() and the typeof(3) construct:

	   #define __COMPARE_TYPES(v, t)      \
		    __builtin_types_compatible_p(__typeof__(v), t)

	   ...

	   if (__COMPARE_TYPES(p, double) != 0)
		   err(EX_DATAERR, "invalid type");

SEE ALSO
     gcc(1), __builtin_constant_p(3), typeof(3)

CAVEATS
     This is a non-standard, compiler-specific extension.

BSD					December 21, 2010				      BSD
Unix & Linux Commands & Man Pages : 2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 09:08 AM.