]> sourceware.org Git - glibc.git/blame - limits.h
Thu Jun 13 00:02:25 1996 Roland McGrath <roland@delasyd.gnu.ai.mit.edu>
[glibc.git] / limits.h
CommitLineData
0200214b 1/* Copyright (C) 1991, 1992, 1996 Free Software Foundation, Inc.
28f540f4
RM
2This file is part of the GNU C Library.
3
4The GNU C Library is free software; you can redistribute it and/or
5modify it under the terms of the GNU Library General Public License as
6published by the Free Software Foundation; either version 2 of the
7License, or (at your option) any later version.
8
9The GNU C Library is distributed in the hope that it will be useful,
10but WITHOUT ANY WARRANTY; without even the implied warranty of
11MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12Library General Public License for more details.
13
14You should have received a copy of the GNU Library General Public
15License along with the GNU C Library; see the file COPYING.LIB. If
16not, write to the Free Software Foundation, Inc., 675 Mass Ave,
17Cambridge, MA 02139, USA. */
18
19/*
20 * ANSI Standard: 4.14/2.2.4.2 Limits of integral types <limits.h>
21 */
22
23#include <features.h>
24
25#ifdef __USE_POSIX
26/* POSIX adds things to <limits.h>. */
27#include <posix1_lim.h>
28#endif
29
30#ifdef __USE_POSIX2
31#include <posix2_lim.h>
32#endif
33
34
35#if __GNUC__ >= 2
36
37 /* Get the compiler's limits.h, which defines all the ANSI constants. */
38 #ifndef _LIBC_LIMITS_H_
39 #define _LIBC_LIMITS_H_ /* This tells it not to look for another. */
40 #endif
41 #ifndef _GCC_LIMITS_H_ /* This is what GCC's file defines. */
42 #include_next <limits.h>
43 #endif
44
45#else /* Not GCC 2. */
46
47/* We only protect from multiple inclusion here, because all the other
48 #include's protect themselves, and in GCC 2 we may #include_next through
49 multiple copies of this file before we get to GCC's. */
50#ifndef _LIMITS_H
51#define _LIMITS_H
52
53/* We don't have #include_next.
54 Define ANSI <limits.h> for standard 32-bit words. */
55
56/* These assume 8-bit `char's, 16-bit `short int's,
57 and 32-bit `int's and `long int's. */
58
59/* Number of bits in a `char'. */
60#define CHAR_BIT 8
61
0200214b
RM
62/* Maximum length of any multibyte character in any locale. */
63#define MB_LEN_MAX 6
28f540f4
RM
64
65/* Minimum and maximum values a `signed char' can hold. */
66#define SCHAR_MIN (-128)
67#define SCHAR_MAX 127
68
69/* Maximum value an `unsigned char' can hold. (Minimum is 0.) */
70#ifdef __STDC__
71#define UCHAR_MAX 255U
72#else
73#define UCHAR_MAX 255
74#endif
75
76/* Minimum and maximum values a `char' can hold. */
77#ifdef __CHAR_UNSIGNED__
78#define CHAR_MIN 0
79#define CHAR_MAX UCHAR_MAX
80#else
81#define CHAR_MIN SCHAR_MIN
82#define CHAR_MAX SCHAR_MAX
83#endif
84
85/* Minimum and maximum values a `signed short int' can hold. */
86#define SHRT_MIN (-32768)
87#define SHRT_MAX 32767
88
89/* Maximum value an `unsigned short int' can hold. (Minimum is 0.) */
90#define USHRT_MAX 65535
91
92/* Minimum and maximum values a `signed int' can hold. */
93#define INT_MIN (- INT_MAX - 1)
94#define INT_MAX 2147483647
95
96/* Maximum value an `unsigned int' can hold. (Minimum is 0.) */
97#ifdef __STDC__
98#define UINT_MAX 4294967295U
99#else
100#define UINT_MAX 4294967295
101#endif
102
b20e47cb
RM
103#ifdef __alpha__
104
105/* Minimum and maximum values a `signed long int' can hold. */
106#define LONG_MAX 9223372036854775807L
107#define LONG_MIN (- LONG_MAX - 1L)
108
109/* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */
110#define ULONG_MAX 18446744073709551615L
111
112#else
113
28f540f4 114/* Minimum and maximum values a `signed long int' can hold. */
28f540f4 115#define LONG_MAX INT_MAX
b20e47cb 116#define LONG_MIN INT_MIN
28f540f4
RM
117
118/* Maximum value an `unsigned long int' can hold. (Minimum is 0.) */
119#define ULONG_MAX UINT_MAX
120
b20e47cb
RM
121#endif
122
123
28f540f4
RM
124#endif /* limits.h */
125#endif /* GCC 2. */
This page took 0.074728 seconds and 5 git commands to generate.