the preprocessor can reliably determine the signedness of wchar_t.
L'\0' is used for 0 in the expressions so that, if the underlying type
of wchar_t is long rather than int, the promoted type of the
expression will match the type of wchar_t.
+++ /dev/null
-#ifndef WCHAR_MIN
-#define WCHAR_MIN 0U
-#define WCHAR_MAX 0xffffffffU
-#endif
+++ /dev/null
-#ifndef WCHAR_MIN
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-#endif
+++ /dev/null
-#ifndef WCHAR_MIN
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-#endif
+++ /dev/null
-#ifndef WCHAR_MIN
-#define WCHAR_MIN 0U
-#define WCHAR_MAX 0xffffffffU
-#endif
+++ /dev/null
-#ifndef WCHAR_MIN
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-#endif
+++ /dev/null
-#ifndef WCHAR_MIN
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-#endif
#define WINT_MIN INT32_MIN
#define WINT_MAX INT32_MAX
-#include <bits/wchar.h>
+#if L'\0'-1 > 0
+#define WCHAR_MAX (0xffffffffu+L'\0')
+#define WCHAR_MIN (0+L'\0')
+#else
+#define WCHAR_MAX (0x7fffffff+L'\0')
+#define WCHAR_MIN (-1-0x7fffffff+L'\0')
+#endif
+
#include <bits/stdint.h>
#endif
#include <bits/alltypes.h>
-#include <bits/wchar.h>
+#if L'\0'-1 > 0
+#define WCHAR_MAX (0xffffffffu+L'\0')
+#define WCHAR_MIN (0+L'\0')
+#else
+#define WCHAR_MAX (0x7fffffff+L'\0')
+#define WCHAR_MIN (-1-0x7fffffff+L'\0')
+#endif
#define NULL 0L