【发布时间】:2018-09-09 01:20:47
【问题描述】:
我一直在寻找 char16_t 和 char32_t,因为我正在使用 Unicode,而我在网上只能找到它们在 uchar.h 中。我在 iOS SDK 中找到了上述标头(由于某种原因,不是 macOS 的标头),但其中没有此类类型。不过,我在不同的标题中看到了它们,但我找不到它们的定义位置。此外,互联网上的信息充其量是稀缺的,所以我有点迷路了;但我确实读过wchar_t不应该用于Unicode,这正是我迄今为止一直在做的,所以请帮忙:(
【问题讨论】:
-
这只是
typedef的整数类型,例如unsigned short或unsigned int。没什么好说的了。 -
@DeiDei 所以,我真的不需要它们吗?有趣的。不过我还是想知道他们住在哪里……
-
如果它们不存在,您可以随时自己键入定义...
-
他们驻留在
uchar.h。这就是标准所说的。如果您在某个实现中找不到它们,那纯粹是该实现的一个细节。它可能包含在文件的更深处。 -
@DeiDei - 这并不完全正确。
unsigned short至少为 16 位(在任何现代健全的平台上都是如此);但unsigned int不需要必须是 32 位。另一方面,unsigned long至少需要 32 位宽。综上所述,不能提供准确的 8、16、32、64 位无符号/有符号类型(通过平台或编译器)的平台应被视为失败的 ISA/ABI。
标签: c macos unicode clang constants