Next: , Up: Types


5.9.1 Particular Type Checks

These macros check for particular C types in sys/types.h, stdlib.h, stdint.h, inttypes.h and others, if they exist.

The Gnulib stdint module is an alternate way to define many of these symbols; it is useful if you prefer your code to assume a C99-or-better environment. See Gnulib.

— Macro: AC_TYPE_GETGROUPS

Define GETGROUPS_T to be whichever of gid_t or int is the base type of the array argument to getgroups.

This macro caches the base type in the ac_cv_type_getgroups variable.

— Macro: AC_TYPE_INT8_T

If stdint.h or inttypes.h does not define the type int8_t, define int8_t to a signed integer type that is exactly 8 bits wide and that uses two's complement representation, if such a type exists. If you are worried about porting to hosts that lack such a type, you can use the results of this macro in C89-or-later code as follows:

          #if HAVE_STDINT_H
          # include <stdint.h>
          #endif
          #if defined INT8_MAX || defined int8_t
           code using int8_t
          #else
           complicated alternative using >8-bit 'signed char'
          #endif

This macro caches the type in the ac_cv_c_int8_t variable.

— Macro: AC_TYPE_INT16_T

This is like AC_TYPE_INT8_T, except for 16-bit integers.

— Macro: AC_TYPE_INT32_T

This is like AC_TYPE_INT8_T, except for 32-bit integers.

— Macro: AC_TYPE_INT64_T

This is like AC_TYPE_INT8_T, except for 64-bit integers.

— Macro: AC_TYPE_INTMAX_T

If stdint.h or inttypes.h defines the type intmax_t, define HAVE_INTMAX_T. Otherwise, define intmax_t to the widest signed integer type.

— Macro: AC_TYPE_INTPTR_T

If stdint.h or inttypes.h defines the type intptr_t, define HAVE_INTPTR_T. Otherwise, define intptr_t to a signed integer type wide enough to hold a pointer, if such a type exists.

— Macro: AC_TYPE_LONG_DOUBLE

If the C compiler supports a working long double type, define HAVE_LONG_DOUBLE. The long double type might have the same range and precision as double.

This macro caches its result in the ac_cv_type_long_double variable.

This macro is obsolescent, as current C compilers support long double. New programs need not use this macro.

— Macro: AC_TYPE_LONG_DOUBLE_WIDER

If the C compiler supports a working long double type with more range or precision than the double type, define HAVE_LONG_DOUBLE_WIDER.

This macro caches its result in the ac_cv_type_long_double_wider variable.

— Macro: AC_TYPE_LONG_LONG_INT

If the C compiler supports a working long long int type, define HAVE_LONG_LONG_INT. However, this test does not test long long int values in preprocessor #if expressions, because too many compilers mishandle such expressions. See Preprocessor Arithmetic.

This macro caches its result in the ac_cv_type_long_long_int variable.

— Macro: AC_TYPE_MBSTATE_T

Define HAVE_MBSTATE_T if <wchar.h> declares the mbstate_t type. Also, define mbstate_t to be a type if <wchar.h> does not declare it.

This macro caches its result in the ac_cv_type_mbstate_t variable.

— Macro: AC_TYPE_MODE_T

Define mode_t to a suitable type, if standard headers do not define it.

This macro caches its result in the ac_cv_type_mode_t variable.

— Macro: AC_TYPE_OFF_T

Define off_t to a suitable type, if standard headers do not define it.

This macro caches its result in the ac_cv_type_off_t variable.

— Macro: AC_TYPE_PID_T

Define pid_t to a suitable type, if standard headers do not define it.

This macro caches its result in the ac_cv_type_pid_t variable.

— Macro: AC_TYPE_SIZE_T

Define size_t to a suitable type, if standard headers do not define it.

This macro caches its result in the ac_cv_type_size_t variable.

— Macro: AC_TYPE_SSIZE_T

Define ssize_t to a suitable type, if standard headers do not define it.

This macro caches its result in the ac_cv_type_ssize_t variable.

— Macro: AC_TYPE_UID_T

Define uid_t and gid_t to suitable types, if standard headers do not define them.

This macro caches its result in the ac_cv_type_uid_t variable.

— Macro: AC_TYPE_UINT8_T

If stdint.h or inttypes.h does not define the type uint8_t, define uint8_t to an unsigned integer type that is exactly 8 bits wide, if such a type exists. This is like AC_TYPE_INT8_T, except for unsigned integers.

— Macro: AC_TYPE_UINT16_T

This is like AC_TYPE_UINT8_T, except for 16-bit integers.

— Macro: AC_TYPE_UINT32_T

This is like AC_TYPE_UINT8_T, except for 32-bit integers.

— Macro: AC_TYPE_UINT64_T

This is like AC_TYPE_UINT8_T, except for 64-bit integers.

— Macro: AC_TYPE_UINTMAX_T

If stdint.h or inttypes.h defines the type uintmax_t, define HAVE_UINTMAX_T. Otherwise, define uintmax_t to the widest unsigned integer type.

— Macro: AC_TYPE_UINTPTR_T

If stdint.h or inttypes.h defines the type uintptr_t, define HAVE_UINTPTR_T. Otherwise, define uintptr_t to an unsigned integer type wide enough to hold a pointer, if such a type exists.

— Macro: AC_TYPE_UNSIGNED_LONG_LONG_INT

If the C compiler supports a working unsigned long long int type, define HAVE_UNSIGNED_LONG_LONG_INT. However, this test does not test unsigned long long int values in preprocessor #if expressions, because too many compilers mishandle such expressions. See Preprocessor Arithmetic.

This macro caches its result in the ac_cv_type_unsigned_long_long_int variable.