1/* This administrivia gets added to the beginning of limits.h 2 if the system has its own version of limits.h. */ 3 4/* We use _GCC_LIMITS_H_ because we want this not to match 5 any macros that the system's limits.h uses for its own purposes. */ 6#ifndef _GCC_LIMITS_H_ /* Terminated in limity.h. */ 7#define _GCC_LIMITS_H_ 8 9#ifndef _LIBC_LIMITS_H_ 10/* Use "..." so that we find syslimits.h only in this same directory. */ 11#include "syslimits.h" 12#endif 13#ifndef _LIMITS_H___ 14#define _LIMITS_H___ 15 16/* Number of bits in a `char'. */ 17#undef CHAR_BIT 18#define CHAR_BIT __CHAR_BIT__ 19 20/* Maximum length of a multibyte character. */ 21#ifndef MB_LEN_MAX 22#define MB_LEN_MAX 1 23#endif 24 25/* Minimum and maximum values a `signed char' can hold. */ 26#undef SCHAR_MIN 27#define SCHAR_MIN (-SCHAR_MAX - 1) 28#undef SCHAR_MAX 29#define SCHAR_MAX __SCHAR_MAX__ 30 31/* Maximum value an `unsigned char' can hold. (Minimum is 0). */ 32#undef UCHAR_MAX 33#if __SCHAR_MAX__ == __INT_MAX__ 34# define UCHAR_MAX (SCHAR_MAX * 2U + 1U) 35#else 36# define UCHAR_MAX (SCHAR_MAX * 2 + 1) 37#endif 38 39/* Minimum and maximum values a `char' can hold. */ 40#ifdef __CHAR_UNSIGNED__ 41# undef CHAR_MIN 42# if __SCHAR_MAX__ == __INT_MAX__ 43# define CHAR_MIN 0U 44# else 45# define CHAR_MIN 0 46# endif 47# undef CHAR_MAX 48# define CHAR_MAX UCHAR_MAX 49#else 50# undef CHAR_MIN 51# define CHAR_MIN SCHAR_MIN 52# undef CHAR_MAX 53# define CHAR_MAX SCHAR_MAX 54#endif 55 56/* Minimum and maximum values a `signed short int' can hold. */ 57#undef SHRT_MIN 58#define SHRT_MIN (-SHRT_MAX - 1) 59#undef SHRT_MAX 60#define SHRT_MAX __SHRT_MAX__ 61 62/* Maximum value an `unsigned short int' can hold. (Minimum is 0). */ 63#undef USHRT_MAX 64#if __SHRT_MAX__ == __INT_MAX__ 65# define USHRT_MAX (SHRT_MAX * 2U + 1U) 66#else 67# define USHRT_MAX (SHRT_MAX * 2 + 1) 68#endif 69 70/* Minimum and maximum values a `signed int' can hold. */ 71#undef INT_MIN 72#define INT_MIN (-INT_MAX - 1) 73#undef INT_MAX 74#define INT_MAX __INT_MAX__ 75 76/* Maximum value an `unsigned int' can hold. (Minimum is 0). */ 77#undef UINT_MAX 78#define UINT_MAX (INT_MAX * 2U + 1U) 79 80/* Minimum and maximum values a `signed long int' can hold. 81 (Same as `int'). */ 82#undef LONG_MIN 83#define LONG_MIN (-LONG_MAX - 1L) 84#undef LONG_MAX 85#define LONG_MAX __LONG_MAX__ 86 87/* Maximum value an `unsigned long int' can hold. (Minimum is 0). */ 88#undef ULONG_MAX 89#define ULONG_MAX (LONG_MAX * 2UL + 1UL) 90 91#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L 92/* Minimum and maximum values a `signed long long int' can hold. */ 93# undef LLONG_MIN 94# define LLONG_MIN (-LLONG_MAX - 1LL) 95# undef LLONG_MAX 96# define LLONG_MAX __LONG_LONG_MAX__ 97 98/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ 99# undef ULLONG_MAX 100# define ULLONG_MAX (LLONG_MAX * 2ULL + 1ULL) 101#endif 102 103#if defined (__GNU_LIBRARY__) ? defined (__USE_GNU) : !defined (__STRICT_ANSI__) 104/* Minimum and maximum values a `signed long long int' can hold. */ 105# undef LONG_LONG_MIN 106# define LONG_LONG_MIN (-LONG_LONG_MAX - 1LL) 107# undef LONG_LONG_MAX 108# define LONG_LONG_MAX __LONG_LONG_MAX__ 109 110/* Maximum value an `unsigned long long int' can hold. (Minimum is 0). */ 111# undef ULONG_LONG_MAX 112# define ULONG_LONG_MAX (LONG_LONG_MAX * 2ULL + 1ULL) 113#endif 114 115#endif /* _LIMITS_H___ */ 116/* This administrivia gets added to the end of limits.h 117 if the system has its own version of limits.h. */ 118 119#else /* not _GCC_LIMITS_H_ */ 120 121#ifdef _GCC_NEXT_LIMITS_H 122#include_next <limits.h> /* recurse down to the real one */ 123#endif 124 125#endif /* not _GCC_LIMITS_H_ */ 126