我不能在64位linux上使用clang来将wchar_t编译为16位
printf("%i ", sizeof (wchar_t));
打印4
clang++ -fshort-char test.cpp
虽然我使用-fshort-char
我的问题是如何使wchar_t为16位。 #define
是唯一的选择吗?
#define wchar_t unsigned short
答案 0 :(得分:2)
使用clang(或gcc)使wchar_t
为16位的方法是
传递编译器选项-fshort-wchar
(不是-fshort-char
)。
然而,这是一个相当激烈的措施,因为它可能会破坏代码
调用标准库或第三方库传递wchar_t
数据。注意
对于gcc和clang,默认情况下wchar_t
是32位,无论是否为
编译器针对32位或64位系统。在这方面他们
符合C标准7.17 / 2,要求wchar_t
为:
一个整数类型,其值范围可以表示所有的不同代码 在受支持的语言环境
中指定的最大扩展字符集的成员
当您调用clang++
时,我认为您正在编译C ++源代码。
如果您只需要一个16位宽的字符类型,并且可以编译
使用选项-std=c++11
,核心语言为您提供char16_t
,其中包含char32_t
适用于存储任何UTF-16字符。 (如果你愿意的话
能够存储任何UTF-32字符,{{1}}会这样做。