如何使用clang for linux-x64制作wchar_t 16位?

时间:2014-01-18 08:34:30

标签: 64-bit clang wchar-t

我不能在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

1 个答案:

答案 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}}会这样做。