如何在C中引用UTF-16字符?

时间:2016-03-10 15:36:36

标签: c utf-16

现在我正在为我的库编写一个C .header文件,该文件处理UTF-16个字符。

这个.h应该在Linux/Windows 32/64 bits的{​​{1}}上编译。 由于它是一个lib头,我不能坚持MSVC/GCC及以后。所以我无法使用C99wchar_t。如何指定uint16_t变量?

到目前为止,我来到这里:

UTF-16

但我真的不认为这是最好的解决方案。

1 个答案:

答案 0 :(得分:4)

您可以以编译器无关的方式尝试某些内置类型:

#include <limits.h>
#include <wchar.h>

#if (WCHAR_MAX==65535) && WCHAR_MIN==0
typedef wchar_t char_UTF16;
#elif USHRT_MAX==65535
typedef unsigned short char_UTF16;
#elif UINT_MAX==65535
typedef unsigned char_UTF16;
#else
#    error "Cannot find 16-bit type"
#endif

(尝试unsigned long没有意义,因为标准要求它至少为32位宽)

...虽然,我不确定你是否应该尝试wchar_t,可能我会直接选择数字类型,否则你可能会冒险让客户承担这一点,例如广泛的字面文字属于&#34;对&#34;为您的图书馆键入,而实际上它们只在Windows上。