From 3adc33cf89f611a80ff25de5c53be701c530fa37 Mon Sep 17 00:00:00 2001 From: ed Date: Sat, 25 May 2013 16:58:12 +0000 Subject: Fix in for C++11. It turns out that in C++11, char16_t and char32_t are built-in types; language keywords. Just fix this by putting traditional _*_T_DECLARED blocks around the definitions. We'll just predefine these in . This also opens up the possibility to define char16_t in other header files, if ever needed (e.g. if we would gain a for char16_t/char32_t). --- include/uchar.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/uchar.h b/include/uchar.h index 34c919f..a3fd4fd 100644 --- a/include/uchar.h +++ b/include/uchar.h @@ -32,6 +32,16 @@ #include #include +#ifndef _CHAR16_T_DECLARED +typedef __char16_t char16_t; +#define _CHAR16_T_DECLARED +#endif + +#ifndef _CHAR32_T_DECLARED +typedef __char32_t char32_t; +#define _CHAR32_T_DECLARED +#endif + #ifndef _MBSTATE_T_DECLARED typedef __mbstate_t mbstate_t; #define _MBSTATE_T_DECLARED @@ -42,9 +52,6 @@ typedef __size_t size_t; #define _SIZE_T_DECLARED #endif -typedef __char16_t char16_t; -typedef __char32_t char32_t; - __BEGIN_DECLS size_t c16rtomb(char * __restrict, char16_t, mbstate_t * __restrict); size_t c32rtomb(char * __restrict, char32_t, mbstate_t * __restrict); -- cgit v1.1