现在我正在为我的库编写一个C .header文件,该文件处理UTF-16
个字符。
这个.h应该在Linux/Windows 32/64 bits
的{{1}}上编译。
由于它是一个lib头,我不能坚持MSVC/GCC
及以后。所以我无法使用C99
或wchar_t
。如何指定uint16_t
变量?
到目前为止,我来到这里:
UTF-16
但我真的不认为这是最好的解决方案。
答案 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上。