1*10465441SEvalZero /* 2*10465441SEvalZero * Copyright (c) 2006-2018, RT-Thread Development Team 3*10465441SEvalZero * 4*10465441SEvalZero * SPDX-License-Identifier: Apache-2.0 5*10465441SEvalZero * 6*10465441SEvalZero * Change Logs: 7*10465441SEvalZero * Date Author Notes 8*10465441SEvalZero */ 9*10465441SEvalZero /* 10*10465441SEvalZero * ISO C Standard: 7.18 Integer types <stdint.h> 11*10465441SEvalZero */ 12*10465441SEvalZero 13*10465441SEvalZero #ifndef __STDINT_H__ 14*10465441SEvalZero #define __STDINT_H__ 15*10465441SEvalZero 16*10465441SEvalZero /* 7.8.1.1 Exact-width integer types */ 17*10465441SEvalZero 18*10465441SEvalZero #ifdef __INT8_TYPE__ 19*10465441SEvalZero typedef __INT8_TYPE__ int8_t; 20*10465441SEvalZero #endif 21*10465441SEvalZero #ifdef __INT16_TYPE__ 22*10465441SEvalZero typedef __INT16_TYPE__ int16_t; 23*10465441SEvalZero #endif 24*10465441SEvalZero #ifdef __INT32_TYPE__ 25*10465441SEvalZero typedef __INT32_TYPE__ int32_t; 26*10465441SEvalZero #endif 27*10465441SEvalZero #ifdef __INT64_TYPE__ 28*10465441SEvalZero typedef __INT64_TYPE__ int64_t; 29*10465441SEvalZero #endif 30*10465441SEvalZero #ifdef __UINT8_TYPE__ 31*10465441SEvalZero typedef __UINT8_TYPE__ uint8_t; 32*10465441SEvalZero #endif 33*10465441SEvalZero #ifdef __UINT16_TYPE__ 34*10465441SEvalZero typedef __UINT16_TYPE__ uint16_t; 35*10465441SEvalZero #endif 36*10465441SEvalZero #ifdef __UINT32_TYPE__ 37*10465441SEvalZero typedef __UINT32_TYPE__ uint32_t; 38*10465441SEvalZero #endif 39*10465441SEvalZero #ifdef __UINT64_TYPE__ 40*10465441SEvalZero typedef __UINT64_TYPE__ uint64_t; 41*10465441SEvalZero #endif 42*10465441SEvalZero 43*10465441SEvalZero /* 7.8.1.2 Minimum-width integer types */ 44*10465441SEvalZero 45*10465441SEvalZero typedef __INT_LEAST8_TYPE__ int_least8_t; 46*10465441SEvalZero typedef __INT_LEAST16_TYPE__ int_least16_t; 47*10465441SEvalZero typedef __INT_LEAST32_TYPE__ int_least32_t; 48*10465441SEvalZero typedef __INT_LEAST64_TYPE__ int_least64_t; 49*10465441SEvalZero typedef __UINT_LEAST8_TYPE__ uint_least8_t; 50*10465441SEvalZero typedef __UINT_LEAST16_TYPE__ uint_least16_t; 51*10465441SEvalZero typedef __UINT_LEAST32_TYPE__ uint_least32_t; 52*10465441SEvalZero typedef __UINT_LEAST64_TYPE__ uint_least64_t; 53*10465441SEvalZero 54*10465441SEvalZero /* 7.8.1.3 Fastest minimum-width integer types */ 55*10465441SEvalZero 56*10465441SEvalZero typedef __INT_FAST8_TYPE__ int_fast8_t; 57*10465441SEvalZero typedef __INT_FAST16_TYPE__ int_fast16_t; 58*10465441SEvalZero typedef __INT_FAST32_TYPE__ int_fast32_t; 59*10465441SEvalZero typedef __INT_FAST64_TYPE__ int_fast64_t; 60*10465441SEvalZero typedef __UINT_FAST8_TYPE__ uint_fast8_t; 61*10465441SEvalZero typedef __UINT_FAST16_TYPE__ uint_fast16_t; 62*10465441SEvalZero typedef __UINT_FAST32_TYPE__ uint_fast32_t; 63*10465441SEvalZero typedef __UINT_FAST64_TYPE__ uint_fast64_t; 64*10465441SEvalZero 65*10465441SEvalZero /* 7.8.1.4 Integer types capable of holding object pointers */ 66*10465441SEvalZero 67*10465441SEvalZero #ifdef __INTPTR_TYPE__ 68*10465441SEvalZero typedef __INTPTR_TYPE__ intptr_t; 69*10465441SEvalZero #endif 70*10465441SEvalZero #ifdef __UINTPTR_TYPE__ 71*10465441SEvalZero typedef __UINTPTR_TYPE__ uintptr_t; 72*10465441SEvalZero #endif 73*10465441SEvalZero 74*10465441SEvalZero /* 7.8.1.5 Greatest-width integer types */ 75*10465441SEvalZero 76*10465441SEvalZero typedef __INTMAX_TYPE__ intmax_t; 77*10465441SEvalZero typedef __UINTMAX_TYPE__ uintmax_t; 78*10465441SEvalZero 79*10465441SEvalZero #if (!defined __cplusplus || __cplusplus >= 201103L \ 80*10465441SEvalZero || defined __STDC_LIMIT_MACROS) 81*10465441SEvalZero 82*10465441SEvalZero /* 83*10465441SEvalZero * 7.18.2 Limits of specified-width integer types. 84*10465441SEvalZero * 85*10465441SEvalZero * The following object-like macros specify the minimum and maximum limits 86*10465441SEvalZero * of integer types corresponding to the typedef names defined above. 87*10465441SEvalZero */ 88*10465441SEvalZero 89*10465441SEvalZero /* 7.18.2.1 Limits of exact-width integer types */ 90*10465441SEvalZero 91*10465441SEvalZero #ifdef __INT8_MAX__ 92*10465441SEvalZero # undef INT8_MAX 93*10465441SEvalZero # define INT8_MAX __INT8_MAX__ 94*10465441SEvalZero # undef INT8_MIN 95*10465441SEvalZero # define INT8_MIN (-INT8_MAX - 1) 96*10465441SEvalZero #endif 97*10465441SEvalZero #ifdef __UINT8_MAX__ 98*10465441SEvalZero # undef UINT8_MAX 99*10465441SEvalZero # define UINT8_MAX __UINT8_MAX__ 100*10465441SEvalZero #endif 101*10465441SEvalZero #ifdef __INT16_MAX__ 102*10465441SEvalZero # undef INT16_MAX 103*10465441SEvalZero # define INT16_MAX __INT16_MAX__ 104*10465441SEvalZero # undef INT16_MIN 105*10465441SEvalZero # define INT16_MIN (-INT16_MAX - 1) 106*10465441SEvalZero #endif 107*10465441SEvalZero #ifdef __UINT16_MAX__ 108*10465441SEvalZero # undef UINT16_MAX 109*10465441SEvalZero # define UINT16_MAX __UINT16_MAX__ 110*10465441SEvalZero #endif 111*10465441SEvalZero #ifdef __INT32_MAX__ 112*10465441SEvalZero # undef INT32_MAX 113*10465441SEvalZero # define INT32_MAX __INT32_MAX__ 114*10465441SEvalZero # undef INT32_MIN 115*10465441SEvalZero # define INT32_MIN (-INT32_MAX - 1) 116*10465441SEvalZero #endif 117*10465441SEvalZero #ifdef __UINT32_MAX__ 118*10465441SEvalZero # undef UINT32_MAX 119*10465441SEvalZero # define UINT32_MAX __UINT32_MAX__ 120*10465441SEvalZero #endif 121*10465441SEvalZero #ifdef __INT64_MAX__ 122*10465441SEvalZero # undef INT64_MAX 123*10465441SEvalZero # define INT64_MAX __INT64_MAX__ 124*10465441SEvalZero # undef INT64_MIN 125*10465441SEvalZero # define INT64_MIN (-INT64_MAX - 1) 126*10465441SEvalZero #endif 127*10465441SEvalZero #ifdef __UINT64_MAX__ 128*10465441SEvalZero # undef UINT64_MAX 129*10465441SEvalZero # define UINT64_MAX __UINT64_MAX__ 130*10465441SEvalZero #endif 131*10465441SEvalZero 132*10465441SEvalZero #undef INT_LEAST8_MAX 133*10465441SEvalZero #define INT_LEAST8_MAX __INT_LEAST8_MAX__ 134*10465441SEvalZero #undef INT_LEAST8_MIN 135*10465441SEvalZero #define INT_LEAST8_MIN (-INT_LEAST8_MAX - 1) 136*10465441SEvalZero #undef UINT_LEAST8_MAX 137*10465441SEvalZero #define UINT_LEAST8_MAX __UINT_LEAST8_MAX__ 138*10465441SEvalZero #undef INT_LEAST16_MAX 139*10465441SEvalZero #define INT_LEAST16_MAX __INT_LEAST16_MAX__ 140*10465441SEvalZero #undef INT_LEAST16_MIN 141*10465441SEvalZero #define INT_LEAST16_MIN (-INT_LEAST16_MAX - 1) 142*10465441SEvalZero #undef UINT_LEAST16_MAX 143*10465441SEvalZero #define UINT_LEAST16_MAX __UINT_LEAST16_MAX__ 144*10465441SEvalZero #undef INT_LEAST32_MAX 145*10465441SEvalZero #define INT_LEAST32_MAX __INT_LEAST32_MAX__ 146*10465441SEvalZero #undef INT_LEAST32_MIN 147*10465441SEvalZero #define INT_LEAST32_MIN (-INT_LEAST32_MAX - 1) 148*10465441SEvalZero #undef UINT_LEAST32_MAX 149*10465441SEvalZero #define UINT_LEAST32_MAX __UINT_LEAST32_MAX__ 150*10465441SEvalZero #undef INT_LEAST64_MAX 151*10465441SEvalZero #define INT_LEAST64_MAX __INT_LEAST64_MAX__ 152*10465441SEvalZero #undef INT_LEAST64_MIN 153*10465441SEvalZero #define INT_LEAST64_MIN (-INT_LEAST64_MAX - 1) 154*10465441SEvalZero #undef UINT_LEAST64_MAX 155*10465441SEvalZero #define UINT_LEAST64_MAX __UINT_LEAST64_MAX__ 156*10465441SEvalZero 157*10465441SEvalZero #undef INT_FAST8_MAX 158*10465441SEvalZero #define INT_FAST8_MAX __INT_FAST8_MAX__ 159*10465441SEvalZero #undef INT_FAST8_MIN 160*10465441SEvalZero #define INT_FAST8_MIN (-INT_FAST8_MAX - 1) 161*10465441SEvalZero #undef UINT_FAST8_MAX 162*10465441SEvalZero #define UINT_FAST8_MAX __UINT_FAST8_MAX__ 163*10465441SEvalZero #undef INT_FAST16_MAX 164*10465441SEvalZero #define INT_FAST16_MAX __INT_FAST16_MAX__ 165*10465441SEvalZero #undef INT_FAST16_MIN 166*10465441SEvalZero #define INT_FAST16_MIN (-INT_FAST16_MAX - 1) 167*10465441SEvalZero #undef UINT_FAST16_MAX 168*10465441SEvalZero #define UINT_FAST16_MAX __UINT_FAST16_MAX__ 169*10465441SEvalZero #undef INT_FAST32_MAX 170*10465441SEvalZero #define INT_FAST32_MAX __INT_FAST32_MAX__ 171*10465441SEvalZero #undef INT_FAST32_MIN 172*10465441SEvalZero #define INT_FAST32_MIN (-INT_FAST32_MAX - 1) 173*10465441SEvalZero #undef UINT_FAST32_MAX 174*10465441SEvalZero #define UINT_FAST32_MAX __UINT_FAST32_MAX__ 175*10465441SEvalZero #undef INT_FAST64_MAX 176*10465441SEvalZero #define INT_FAST64_MAX __INT_FAST64_MAX__ 177*10465441SEvalZero #undef INT_FAST64_MIN 178*10465441SEvalZero #define INT_FAST64_MIN (-INT_FAST64_MAX - 1) 179*10465441SEvalZero #undef UINT_FAST64_MAX 180*10465441SEvalZero #define UINT_FAST64_MAX __UINT_FAST64_MAX__ 181*10465441SEvalZero 182*10465441SEvalZero #ifdef __INTPTR_MAX__ 183*10465441SEvalZero # undef INTPTR_MAX 184*10465441SEvalZero # define INTPTR_MAX __INTPTR_MAX__ 185*10465441SEvalZero # undef INTPTR_MIN 186*10465441SEvalZero # define INTPTR_MIN (-INTPTR_MAX - 1) 187*10465441SEvalZero #endif 188*10465441SEvalZero #ifdef __UINTPTR_MAX__ 189*10465441SEvalZero # undef UINTPTR_MAX 190*10465441SEvalZero # define UINTPTR_MAX __UINTPTR_MAX__ 191*10465441SEvalZero #endif 192*10465441SEvalZero 193*10465441SEvalZero #undef INTMAX_MAX 194*10465441SEvalZero #define INTMAX_MAX __INTMAX_MAX__ 195*10465441SEvalZero #undef INTMAX_MIN 196*10465441SEvalZero #define INTMAX_MIN (-INTMAX_MAX - 1) 197*10465441SEvalZero #undef UINTMAX_MAX 198*10465441SEvalZero #define UINTMAX_MAX __UINTMAX_MAX__ 199*10465441SEvalZero 200*10465441SEvalZero /* 7.18.3 Limits of other integer types */ 201*10465441SEvalZero 202*10465441SEvalZero #undef PTRDIFF_MAX 203*10465441SEvalZero #define PTRDIFF_MAX __PTRDIFF_MAX__ 204*10465441SEvalZero #undef PTRDIFF_MIN 205*10465441SEvalZero #define PTRDIFF_MIN (-PTRDIFF_MAX - 1) 206*10465441SEvalZero 207*10465441SEvalZero #undef SIG_ATOMIC_MAX 208*10465441SEvalZero #define SIG_ATOMIC_MAX __SIG_ATOMIC_MAX__ 209*10465441SEvalZero #undef SIG_ATOMIC_MIN 210*10465441SEvalZero #define SIG_ATOMIC_MIN __SIG_ATOMIC_MIN__ 211*10465441SEvalZero 212*10465441SEvalZero #undef SIZE_MAX 213*10465441SEvalZero #define SIZE_MAX __SIZE_MAX__ 214*10465441SEvalZero 215*10465441SEvalZero #undef WCHAR_MAX 216*10465441SEvalZero #define WCHAR_MAX __WCHAR_MAX__ 217*10465441SEvalZero #undef WCHAR_MIN 218*10465441SEvalZero #define WCHAR_MIN __WCHAR_MIN__ 219*10465441SEvalZero 220*10465441SEvalZero #undef WINT_MAX 221*10465441SEvalZero #define WINT_MAX __WINT_MAX__ 222*10465441SEvalZero #undef WINT_MIN 223*10465441SEvalZero #define WINT_MIN __WINT_MIN__ 224*10465441SEvalZero 225*10465441SEvalZero #endif /* (!defined __cplusplus || __cplusplus >= 201103L 226*10465441SEvalZero || defined __STDC_LIMIT_MACROS) */ 227*10465441SEvalZero 228*10465441SEvalZero #if (!defined __cplusplus || __cplusplus >= 201103L \ 229*10465441SEvalZero || defined __STDC_CONSTANT_MACROS) 230*10465441SEvalZero 231*10465441SEvalZero #undef INT8_C 232*10465441SEvalZero #define INT8_C(c) __INT8_C(c) 233*10465441SEvalZero #undef INT16_C 234*10465441SEvalZero #define INT16_C(c) __INT16_C(c) 235*10465441SEvalZero #undef INT32_C 236*10465441SEvalZero #define INT32_C(c) __INT32_C(c) 237*10465441SEvalZero #undef INT64_C 238*10465441SEvalZero #define INT64_C(c) __INT64_C(c) 239*10465441SEvalZero #undef UINT8_C 240*10465441SEvalZero #define UINT8_C(c) __UINT8_C(c) 241*10465441SEvalZero #undef UINT16_C 242*10465441SEvalZero #define UINT16_C(c) __UINT16_C(c) 243*10465441SEvalZero #undef UINT32_C 244*10465441SEvalZero #define UINT32_C(c) __UINT32_C(c) 245*10465441SEvalZero #undef UINT64_C 246*10465441SEvalZero #define UINT64_C(c) __UINT64_C(c) 247*10465441SEvalZero #undef INTMAX_C 248*10465441SEvalZero #define INTMAX_C(c) __INTMAX_C(c) 249*10465441SEvalZero #undef UINTMAX_C 250*10465441SEvalZero #define UINTMAX_C(c) __UINTMAX_C(c) 251*10465441SEvalZero 252*10465441SEvalZero #endif /* (!defined __cplusplus || __cplusplus >= 201103L 253*10465441SEvalZero || defined __STDC_CONSTANT_MACROS) */ 254*10465441SEvalZero 255*10465441SEvalZero #ifndef __INT_MAX__ 256*10465441SEvalZero #define __INT_MAX__ 2147483647 257*10465441SEvalZero #endif 258*10465441SEvalZero #define INT_MIN (-1 - INT_MAX) 259*10465441SEvalZero #define INT_MAX (__INT_MAX__) 260*10465441SEvalZero #define UINT_MAX (INT_MAX * 2U + 1U) 261*10465441SEvalZero 262*10465441SEvalZero #define LONG_MAX ((long)(~0UL>>1)) 263*10465441SEvalZero #define LONG_MIN (-LONG_MAX - 1) 264*10465441SEvalZero #define ULONG_MAX (~0UL) 265*10465441SEvalZero 266*10465441SEvalZero #endif 267