summaryrefslogtreecommitdiff
path: root/include/limits.h
blob: 8b59c8208ba61ad75a662b3214abf13aa850f9c0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
/* Copyright (C) 1991, 1992 Free Software Foundation, Inc.
This file is part of the GNU C Library.

The GNU C Library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public License as
published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.

The GNU C Library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Library General Public License for more details.

You should have received a copy of the GNU Library General Public
License along with the GNU C Library; see the file COPYING.LIB.  If
not, write to the Free Software Foundation, Inc., 675 Mass Ave,
Cambridge, MA 02139, USA.  */

/*
 *	ANSI Standard: 4.14/2.2.4.2 Limits of integral types	<limits.h>
 */

#ifndef	_LIMITS_H

#define	_LIMITS_H	1
#include <features.h>

#ifdef	__USE_POSIX
/* POSIX adds things to <limits.h>.  */
#include <posix1_lim.h>
#endif

#ifdef	__USE_POSIX2
#include <posix2_lim.h>
#endif


/* Only if gcc 2.x is used and -traditional is not used, we can use
 * #include_next.
#if	__GNUC__ >= 2 && __STDC__
 */
#if	__GNUC__ >= 2

 /* Have we done that? */
# if !defined(_GCC_LIMITS_H_) && !defined(_GCC_LIMITS_H)
  /* Get the compiler's limits.h, which defines all the ANSI
   * constants.
   */
  /* This tells it not to look for another.  */
# define _LIBC_LIMITS_H
# define _LIBC_LIMITS_H_
# include_next <limits.h>
# endif

#else	/* Not GCC 2.  */

/* We don't have #include_next.
   Define ANSI <limits.h> for standard 32-bit words.  */

/* These assume 8-bit `char's, 16-bit `short int's,
   and 32-bit `int's and `long int's.  */

/* Number of bits in a `char'.	*/
#define	CHAR_BIT	8

/* Maximum length of any multibyte character in any locale.
   Locale-writers should change this as necessary.  */
#define	MB_LEN_MAX	1

/* Minimum and maximum values a `signed char' can hold.  */
#define	SCHAR_MIN	(-128)
#define	SCHAR_MAX	127

/* Maximum value an `unsigned char' can hold.  (Minimum is 0.)  */
#ifdef	__STDC__
#define	UCHAR_MAX	255U
#else
#define	UCHAR_MAX	255
#endif

/* Minimum and maximum values a `char' can hold.  */
#ifdef __CHAR_UNSIGNED__
#define	CHAR_MIN	0
#define	CHAR_MAX	UCHAR_MAX
#else
#define	CHAR_MIN	SCHAR_MIN
#define	CHAR_MAX	SCHAR_MAX
#endif

/* Minimum and maximum values a `signed short int' can hold.  */
#define	SHRT_MIN	(-32768)
#define	SHRT_MAX	32767

/* Maximum value an `unsigned short int' can hold.  (Minimum is 0.)  */
#define	USHRT_MAX	65535

/* Minimum and maximum values a `signed int' can hold.  */
#define	INT_MIN	(- INT_MAX - 1)
#define	INT_MAX	2147483647

/* Maximum value an `unsigned int' can hold.  (Minimum is 0.)  */
#ifdef	__STDC__
#define	UINT_MAX	4294967295U
#else
#define	UINT_MAX	4294967295
#endif

/* Minimum and maximum values a `signed long int' can hold.  */
#define	LONG_MIN	INT_MIN
#define	LONG_MAX	INT_MAX

/* Maximum value an `unsigned long int' can hold.  (Minimum is 0.)  */
#define	ULONG_MAX	UINT_MAX

#endif	/* GCC 2.  */


#ifndef RAND_MAX
/* The largest number rand will return (same as INT_MAX).  */
#define RAND_MAX	INT_MAX
#endif

#ifdef __SVR4_I386_ABI_L1__

#define NL_ARGMAX	9
#define NL_LANGMAX	14
#define NL_MSGMAX	32767
#define NL_NMAX		1
#define NL_SETMAX	255
#define NL_TEXTMAX	255
#define NZERO		20

#define WORD_BIT	32
#define LONG_BIT	32

#define FCHR_MAX	1048576

#endif /* __SVR4_I386_ABI_L1__ */

#endif	/* limits.h  */