I cannot make clang on 64 bit linux to compile wchar_t to 16 bit
printf("%i ", sizeof (wchar_t));
prints 4
clang++ -fshort-char test.cpp
although I use -fshort-char
my question is how to make wchar_t to 16 bit. is #define
the only option?
#define wchar_t unsigned short
The way to make wchar_t
be 16 bits with clang (or gcc) is to
pass the compiler option -fshort-wchar
(not -fshort-char
).
This is a rather drastic measure, however, as it may break code that
calls the Standard Library or 3rd party libraries passing wchar_t
data. Note
that by default wchar_t
is 32 bits for gcc and clang regardless of whether the
compiler targets 32-bit or 64-bit systems. In this respect they
conform with the C Standard 7.17/2 which requires wchar_t
to be:
an integer type whose range of values can represent distinct codes for all members of the largest extended character set specified among the supported locales
As you are invoking clang++
I presume you are compiling C++ source.
If you simply require a character type that is 16 bits wide, and can compile
with the option -std=c++11
, the core language offers you char16_t
, which
is suitable for storing any UTF-16 character. (And should you wish to
be able to store any UTF-32 character, char32_t
will do).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With