home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / crt / src / limits.h < prev    next >
C/C++ Source or Header  |  1998-06-17  |  4KB  |  96 lines

  1. /***
  2. *limits.h - implementation dependent values
  3. *
  4. *       Copyright (c) 1985-1997, Microsoft Corporation.  All rights reserved.
  5. *
  6. *Purpose:
  7. *       Contains defines for a number of implementation dependent values
  8. *       which are commonly used in C programs.
  9. *       [ANSI]
  10. *
  11. *       [Public]
  12. *
  13. ****/
  14.  
  15. #if _MSC_VER > 1000
  16. #pragma once
  17. #endif  /* _MSC_VER > 1000 */
  18.  
  19. #ifndef _INC_LIMITS
  20. #define _INC_LIMITS
  21.  
  22. #if !defined (_WIN32) && !defined (_MAC)
  23. #error ERROR: Only Mac or Win32 targets supported!
  24. #endif  /* !defined (_WIN32) && !defined (_MAC) */
  25.  
  26. #ifndef _CRTBLD
  27. /* This version of the header files is NOT for user programs.
  28.  * It is intended for use when building the C runtimes ONLY.
  29.  * The version intended for public use will not have this message.
  30.  */
  31. #error ERROR: Use of C runtime library internal header file.
  32. #endif  /* _CRTBLD */
  33.  
  34. #define CHAR_BIT      8         /* number of bits in a char */
  35. #define SCHAR_MIN   (-128)      /* minimum signed char value */
  36. #define SCHAR_MAX     127       /* maximum signed char value */
  37. #define UCHAR_MAX     0xff      /* maximum unsigned char value */
  38.  
  39. #ifndef _CHAR_UNSIGNED
  40. #define CHAR_MIN    SCHAR_MIN   /* mimimum char value */
  41. #define CHAR_MAX    SCHAR_MAX   /* maximum char value */
  42. #else  /* _CHAR_UNSIGNED */
  43. #define CHAR_MIN      0
  44. #define CHAR_MAX    UCHAR_MAX
  45. #endif  /* _CHAR_UNSIGNED */
  46.  
  47. #define MB_LEN_MAX    2             /* max. # bytes in multibyte char */
  48. #define SHRT_MIN    (-32768)        /* minimum (signed) short value */
  49. #define SHRT_MAX      32767         /* maximum (signed) short value */
  50. #define USHRT_MAX     0xffff        /* maximum unsigned short value */
  51. #define INT_MIN     (-2147483647 - 1) /* minimum (signed) int value */
  52. #define INT_MAX       2147483647    /* maximum (signed) int value */
  53. #define UINT_MAX      0xffffffff    /* maximum unsigned int value */
  54. #define LONG_MIN    (-2147483647L - 1) /* minimum (signed) long value */
  55. #define LONG_MAX      2147483647L   /* maximum (signed) long value */
  56. #define ULONG_MAX     0xffffffffUL  /* maximum unsigned long value */
  57.  
  58. #if _INTEGRAL_MAX_BITS >= 8
  59. #define _I8_MIN     (-127i8 - 1)    /* minimum signed 8 bit value */
  60. #define _I8_MAX       127i8         /* maximum signed 8 bit value */
  61. #define _UI8_MAX      0xffui8       /* maximum unsigned 8 bit value */
  62. #endif  /* _INTEGRAL_MAX_BITS >= 8 */
  63.  
  64. #if _INTEGRAL_MAX_BITS >= 16
  65. #define _I16_MIN    (-32767i16 - 1) /* minimum signed 16 bit value */
  66. #define _I16_MAX      32767i16      /* maximum signed 16 bit value */
  67. #define _UI16_MAX     0xffffui16    /* maximum unsigned 16 bit value */
  68. #endif  /* _INTEGRAL_MAX_BITS >= 16 */
  69.  
  70. #if _INTEGRAL_MAX_BITS >= 32
  71. #define _I32_MIN    (-2147483647i32 - 1) /* minimum signed 32 bit value */
  72. #define _I32_MAX      2147483647i32 /* maximum signed 32 bit value */
  73. #define _UI32_MAX     0xffffffffui32 /* maximum unsigned 32 bit value */
  74. #endif  /* _INTEGRAL_MAX_BITS >= 32 */
  75.  
  76. #if _INTEGRAL_MAX_BITS >= 64
  77. /* minimum signed 64 bit value */
  78. #define _I64_MIN    (-9223372036854775807i64 - 1)
  79. /* maximum signed 64 bit value */
  80. #define _I64_MAX      9223372036854775807i64
  81. /* maximum unsigned 64 bit value */
  82. #define _UI64_MAX     0xffffffffffffffffui64
  83. #endif  /* _INTEGRAL_MAX_BITS >= 64 */
  84.  
  85. #if _INTEGRAL_MAX_BITS >= 128
  86. /* minimum signed 128 bit value */
  87. #define _I128_MIN   (-170141183460469231731687303715884105727i128 - 1)
  88. /* maximum signed 128 bit value */
  89. #define _I128_MAX     170141183460469231731687303715884105727i128
  90. /* maximum unsigned 128 bit value */
  91. #define _UI128_MAX    0xffffffffffffffffffffffffffffffffui128
  92. #endif  /* _INTEGRAL_MAX_BITS >= 128 */
  93.  
  94.  
  95. #endif  /* _INC_LIMITS */
  96.