/ src / include / stdint.h
stdint.h
 1  /* SPDX-License-Identifier: GPL-2.0-only */
 2  
 3  #ifndef STDINT_H
 4  #define STDINT_H
 5  
 6  /* Fixed width integer types */
 7  typedef signed char        int8_t;
 8  typedef unsigned char      uint8_t;
 9  
10  typedef signed short       int16_t;
11  typedef unsigned short     uint16_t;
12  
13  typedef signed int         int32_t;
14  typedef unsigned int       uint32_t;
15  
16  typedef signed long long   int64_t;
17  typedef unsigned long long uint64_t;
18  
19  /* Types for 'void *' pointers */
20  typedef signed long        intptr_t;
21  typedef unsigned long      uintptr_t;
22  
23  /* Ensure that the widths are all correct */
24  _Static_assert(sizeof(int8_t) == 1, "Size of int8_t is incorrect");
25  _Static_assert(sizeof(uint8_t) == 1, "Size of uint8_t is incorrect");
26  
27  _Static_assert(sizeof(int16_t) == 2, "Size of int16_t is incorrect");
28  _Static_assert(sizeof(uint16_t) == 2, "Size of uint16_t is incorrect");
29  
30  _Static_assert(sizeof(int32_t) == 4, "Size of int32_t is incorrect");
31  _Static_assert(sizeof(uint32_t) == 4, "Size of uint32_t is incorrect");
32  
33  _Static_assert(sizeof(int64_t) == 8, "Size of int64_t is incorrect");
34  _Static_assert(sizeof(uint64_t) == 8, "Size of uint64_t is incorrect");
35  
36  _Static_assert(sizeof(intptr_t) == sizeof(void *), "Size of intptr_t is incorrect");
37  _Static_assert(sizeof(uintptr_t) == sizeof(void *), "Size of uintptr_t is incorrect");
38  
39  /* Maximum width integer types */
40  typedef int64_t  intmax_t;
41  typedef uint64_t uintmax_t;
42  
43  /* Convenient typedefs */
44  typedef int8_t   s8;
45  typedef uint8_t  u8;
46  
47  typedef int16_t  s16;
48  typedef uint16_t u16;
49  
50  typedef int32_t  s32;
51  typedef uint32_t u32;
52  
53  typedef int64_t  s64;
54  typedef uint64_t u64;
55  
56  /* Limits of integer types */
57  #define INT8_MIN   ((int8_t)0x80)
58  #define INT8_MAX   ((int8_t)0x7F)
59  #define UINT8_MAX  ((uint8_t)0xFF)
60  
61  #define INT16_MIN  ((int16_t)0x8000)
62  #define INT16_MAX  ((int16_t)0x7FFF)
63  #define UINT16_MAX ((uint16_t)0xFFFF)
64  
65  #define INT32_MIN  ((int32_t)0x80000000)
66  #define INT32_MAX  ((int32_t)0x7FFFFFFF)
67  #define UINT32_MAX ((uint32_t)0xFFFFFFFF)
68  
69  #define INT64_MIN  ((int64_t)0x8000000000000000)
70  #define INT64_MAX  ((int64_t)0x7FFFFFFFFFFFFFFF)
71  #define UINT64_MAX ((uint64_t)0xFFFFFFFFFFFFFFFF)
72  
73  #define INTMAX_MIN  INT64_MIN
74  #define INTMAX_MAX  INT64_MAX
75  #define UINTMAX_MAX UINT64_MAX
76  
77  #endif /* STDINT_H */