@node uchar.h
@section @file{uchar.h}

ISO C23 specification:@* @url{http://www.open-std.org/jtc1/sc22/wg14/www/docs/n3220.pdf} section 7.30.

POSIX specification:@* @url{https://pubs.opengroup.org/onlinepubs/9799919799/basedefs/uchar.h.html}

Defines the types @code{char16_t}, @code{char32_t} and declares the
functions @code{mbrtoc16}, @code{c16rtomb}, @code{mbrtoc32},
@code{c32rtomb}.

Gnulib module: uchar or uchar-c23
@mindex uchar
@mindex uchar-c23

Portability problems fixed by either Gnulib module @code{uchar} or @code{uchar-c23}:
@itemize
@item
This header file is missing on many non-glibc platforms:
glibc 2.15, macOS 14, FreeBSD 6.4, NetBSD 10.0, OpenBSD 7.3, Minix 3.1.8, AIX 7.1, HP-UX 11.31, Solaris 11.3, Cygwin 3.4.x, mingw, MSVC 9.
@item
This file is not self-contained on some platforms:
@c https://dev.haiku-os.org/ticket/17040
Haiku.
@item
This file produces compilation errors in C++ mode on some platforms:
AIX 7.2 with xlclang++.
@end itemize

Portability problems fixed by Gnulib module @code{uchar-c23}:
@itemize
@item
@code{char32_t} values may not be Unicode code points.
This is the case in ISO C 11 compliant but not ISO C 23 compliant
implementations.
@end itemize

Portability problems not fixed by Gnulib:
@itemize
@end itemize
