it's a keyword in c++ (wtf). i'm not sure this is the cleanest
solution; it might be better to avoid ever defining __NEED_wchar_t on
c++. but in any case, this works for now.
TYPEDEF __builtin_va_list va_list;
+#ifndef __cplusplus
TYPEDEF unsigned wchar_t;
+#endif
TYPEDEF int wint_t;
TYPEDEF long wctrans_t;
TYPEDEF long wctype_t;
TYPEDEF struct __va_list * va_list;
#endif
+#ifndef __cplusplus
#ifdef __WCHAR_TYPE__
TYPEDEF __WCHAR_TYPE__ wchar_t;
#else
TYPEDEF long wchar_t;
#endif
+#endif
TYPEDEF long wint_t;
TYPEDEF long wctrans_t;
TYPEDEF long wctype_t;
TYPEDEF long ptrdiff_t;
TYPEDEF __builtin_va_list va_list;
+#ifndef __cplusplus
TYPEDEF int wchar_t;
+#endif
TYPEDEF int wint_t;
TYPEDEF int wctrans_t;
TYPEDEF int wctype_t;