1 /***
2 *limits.h - implementation dependent values
3 *
4 *           Copyright (c) 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
18
19 #include <crtdefs.h>
20
21 #ifndef _INC_LIMITS
22 #define _INC_LIMITS
23
24
25 #define CHAR_BIT          8               /* number of bits in a char */
26 #define SCHAR_MIN     (-128)          /* minimum signed char value */
27 #define SCHAR_MAX        127           /* maximum signed char value */
28 #define UCHAR_MAX        0xff          /* maximum unsigned char value */
29
30 #ifndef _CHAR_UNSIGNED
31 #define CHAR_MIN      SCHAR_MIN     /* mimimum char value */
32 #define CHAR_MAX      SCHAR_MAX     /* maximum char value */
33 #else
34 #define CHAR_MIN          0
35 #define CHAR_MAX      UCHAR_MAX
36 #endif  /* _CHAR_UNSIGNED */
37
38 #define MB_LEN_MAX      5                     /* max. # bytes in multibyte char */
39 #define SHRT_MIN      (-32768)             /* minimum (signed) short value */
40 #define SHRT_MAX          32767               /* maximum (signed) short value */
41 #define USHRT_MAX        0xffff             /* maximum unsigned short value */
42 #define INT_MIN        (-2147483647 - 1) /* minimum (signed) int value */
43 #define INT_MAX           2147483647      /* maximum (signed) int value */
44 #define UINT_MAX          0xffffffff      /* maximum unsigned int value */
45 #define LONG_MIN      (-2147483647L - 1) /* minimum (signed) long value */
46 #define LONG_MAX          2147483647L     /* maximum (signed) long value */
47 #define ULONG_MAX        0xffffffffUL  /* maximum unsigned long value */
Lines 48 ... 57 are skipped.
58 #define _UI16_MAX        0xffffui16      /* maximum unsigned 16 bit value */
59
60 #define _I32_MIN      (-2147483647i32 - 1) /* minimum signed 32 bit value */
61 #define _I32_MAX          2147483647i32 /* maximum signed 32 bit value */
62 #define _UI32_MAX        0xffffffffui32 /* maximum unsigned 32 bit value */
63
64 /* minimum signed 64 bit value */
65 #define _I64_MIN      (-9223372036854775807i64 - 1)
66 /* maximum signed 64 bit value */
67 #define _I64_MAX          9223372036854775807i64
68 /* maximum unsigned 64 bit value */
69 #define _UI64_MAX        0xffffffffffffffffui64
70
71 #if        _INTEGRAL_MAX_BITS >= 128
72 /* minimum signed 128 bit value */
73 #define _I128_MIN     (-170141183460469231731687303715884105727i128 - 1)
74 /* maximum signed 128 bit value */
75 #define _I128_MAX        170141183460469231731687303715884105727i128
76 /* maximum unsigned 128 bit value */
77 #define _UI128_MAX      0xffffffffffffffffffffffffffffffffui128
78 #endif
79
80 #ifndef SIZE_MAX
81 #ifdef _WIN64 
82 #define SIZE_MAX _UI64_MAX
83 #else
84 #define SIZE_MAX UINT_MAX
85 #endif
86 #endif
87
88 #if __STDC_WANT_SECURE_LIB__
89 /* While waiting to the C standard committee to finalize the decision on RSIZE_MAX and rsize_t,
90  * we define RSIZE_MAX as SIZE_MAX
91  */
92 #ifndef RSIZE_MAX
93 #define RSIZE_MAX SIZE_MAX
94 #endif
95 #endif
96
97 #ifdef  _POSIX_
98
99 #define _POSIX_ARG_MAX          4096
100 #define _POSIX_CHILD_MAX      6
101 #define _POSIX_LINK_MAX        8
102 #define _POSIX_MAX_CANON      255
103 #define _POSIX_MAX_INPUT      255
104 #define _POSIX_NAME_MAX        14
105 #define _POSIX_NGROUPS_MAX  0
106 #define _POSIX_OPEN_MAX        16
107 #define _POSIX_PATH_MAX        255
108 #define _POSIX_PIPE_BUF        512
109 #define _POSIX_SSIZE_MAX      32767
110 #define _POSIX_STREAM_MAX     8
111 #define _POSIX_TZNAME_MAX     3
112
113 #define ARG_MAX                     14500           /* 16k heap, minus overhead */
114 #define LINK_MAX                    1024
115 #define MAX_CANON                  _POSIX_MAX_CANON
116 #define MAX_INPUT                  _POSIX_MAX_INPUT
117 #define NAME_MAX                    255
118 #define NGROUPS_MAX               16
119 #define OPEN_MAX                    32
120 #define PATH_MAX                    512
121 #define PIPE_BUF                    _POSIX_PIPE_BUF
122 #define SSIZE_MAX                  _POSIX_SSIZE_MAX
123 #define STREAM_MAX                20
124 #define TZNAME_MAX                10
125
126 #endif  /* POSIX */
127
128 #endif  /* _INC_LIMITS */
129