limits.h 3.3 KB

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