diff --git a/Userland/Libraries/LibC/bits/stdint.h b/Userland/Libraries/LibC/bits/stdint.h index f242978580..6b90e51af9 100644 --- a/Userland/Libraries/LibC/bits/stdint.h +++ b/Userland/Libraries/LibC/bits/stdint.h @@ -49,6 +49,32 @@ typedef __INT_LEAST64_TYPE__ int_least64_t; #define __int64_t_defined 1 #define __uint64_t_defined 1 +#define INT8_C(x) x +#define UINT8_C(x) x + +#define INT16_C(x) x +#define UINT16_C(x) x + +#define INT32_C(x) x +#define UINT32_C(x) x##U + +#ifdef __clang__ +# define __int_c_concat(a, b) a##b +# define __int_c(var, suffix) __int_c_concat(var, suffix) + +# define INT64_C(x) __int_c(x, __INT64_C_SUFFIX__) +# define UINT64_C(x) __int_c(x, __UINT64_C_SUFFIX__) + +# define INTMAX_C(c) __int_c(c, __INTMAX_C_SUFFIX__) +# define UINTMAX_C(c) __int_c(x, __UINTMAX_C_SUFFIX__) +#else +# define INT64_C(x) __INT64_C(x) +# define UINT64_C(x) __UINT64_C(x) + +# define INTMAX_C(c) __INTMAX_C(x) +# define UINTMAX_C(c) __UINTMAX_C(x) +#endif + typedef __UINTPTR_TYPE__ uintptr_t; typedef __INTPTR_TYPE__ intptr_t; @@ -62,19 +88,19 @@ typedef __INTMAX_TYPE__ intmax_t; #define INT8_MIN (-128) #define INT16_MIN (-32767 - 1) #define INT32_MIN (-2147483647 - 1) -#define INT64_MIN (-9223372036854775807LL - 1LL) +#define INT64_MIN (-INT64_C(9223372036854775807) - 1) #define INT8_MAX (127) #define INT16_MAX (32767) #define INT32_MAX (2147483647) -#define INT64_MAX (9223372036854775807LL) +#define INT64_MAX (INT64_C(9223372036854775807)) #define UINT8_MAX (255) #define UINT16_MAX (65535) #define UINT32_MAX (4294967295U) -#define UINT64_MAX (18446744073709551615ULL) +#define UINT64_MAX (UINT64_C(18446744073709551615)) -#define INTPTR_MAX INT32_MAX -#define INTPTR_MIN INT32_MIN -#define UINTPTR_MAX UINT32_MAX +#define INTPTR_MAX __INTPTR_MAX__ +#define INTPTR_MIN (-INTPTR_MAX - 1) +#define UINTPTR_MAX __UINTPTR_MAX__ #define INT_FAST8_MIN INT8_MIN #define INT_FAST16_MIN INT16_MIN @@ -106,21 +132,6 @@ typedef __INTMAX_TYPE__ intmax_t; #define UINT_LEAST32_MAX UINT32_MAX #define UINT_LEAST64_MAX UINT64_MAX -#define INT8_C(x) x -#define UINT8_C(x) x - -#define INT16_C(x) x -#define UINT16_C(x) x - -#define INT32_C(x) x -#define UINT32_C(x) x - -#define INT64_C(x) x##LL -#define UINT64_C(x) x##ULL - -#define INTMAX_C(c) c##LL -#define UINTMAX_C(c) c##ULL - #define SIZE_MAX ((size_t)-1) #define PTRDIFF_MAX __PTRDIFF_MAX__