wchar_t in inttypes.h and C++

Juli Mallett jmallett at FreeBSD.org
Sun Jan 24 05:13:24 UTC 2010


Hey folks,

The handling of wchar_t in inttypes.h for wcsto*max(3) is currently
broken in C++ where wchar_t is a built-in type and not derived from
__wchar_t.  I have a patch to define wchar_t if it isn't defined in C
and to use wchar_t in the declarations rather than __wchar_t as we do
today, as is done in other headers that declare wchar_t functions.
BDE doesn't like it -- certainly it's unclear that it would be okay
for inttypes.h to define wchar_t in C -- but I'm not sure there's a
markedly-better alternative.

We could define a type ___wchar_t (or something like) that is a
typedef of __wchar_t in C and a typedef of wchar_t in C++.  We could
define wcsto*max(3) differently for C++ and C.  We could declare the
functions as taking wchar_t but only define them if wchar_t has been
defined (or we're compiling for C++).

For the sake of argument, here's the inttypes.h patch that follows the
lead of stdlib.h:

http://people.freebsd.org/~jmallett/wchar-inttypes.diff

Thanks,
Juli.


More information about the freebsd-standards mailing list