including uchar.h in c++ code is only well defined in c++11 onwards
where char16_t and char32_t type definitions must be hidden since they
are keywords. however some c++ code compiled for older c++ standard
include uchar.h too and they need the typedefs, this fix makes such
code work.
#ifdef __cplusplus
extern "C" {
-#else
+#endif
+
+#if __cplusplus < 201103L
typedef unsigned short char16_t;
typedef unsigned char32_t;
#endif