Parcourir la source

eliminate bits/wchar.h

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.
Rich Felker il y a 11 ans
Parent
commit
c7af271000

+ 0 - 4
arch/arm/bits/wchar.h

@@ -1,4 +0,0 @@
-#ifndef WCHAR_MIN
-#define WCHAR_MIN 0U
-#define WCHAR_MAX 0xffffffffU
-#endif

+ 0 - 4
arch/i386/bits/wchar.h

@@ -1,4 +0,0 @@
-#ifndef WCHAR_MIN
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-#endif

+ 0 - 4
arch/microblaze/bits/wchar.h

@@ -1,4 +0,0 @@
-#ifndef WCHAR_MIN
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-#endif

+ 0 - 4
arch/mips/bits/wchar.h

@@ -1,4 +0,0 @@
-#ifndef WCHAR_MIN
-#define WCHAR_MIN 0U
-#define WCHAR_MAX 0xffffffffU
-#endif

+ 0 - 4
arch/powerpc/bits/wchar.h

@@ -1,4 +0,0 @@
-#ifndef WCHAR_MIN
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-#endif

+ 0 - 4
arch/x86_64/bits/wchar.h

@@ -1,4 +0,0 @@
-#ifndef WCHAR_MIN
-#define WCHAR_MIN (-1-0x7fffffff)
-#define WCHAR_MAX (0x7fffffff)
-#endif

+ 8 - 1
include/stdint.h

@@ -78,7 +78,14 @@ typedef unsigned long long uintmax_t;
 #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

+ 7 - 1
include/wchar.h

@@ -24,7 +24,13 @@ extern "C" {
 
 #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