我有一些typedef类型用于保存unicode字符串,UTF16
定义为uint_least16_t
,UTF32
定义为{{1} (与char(16 | 32)_t)
在Xcode的调试器中,显示UTF32字符串as
我已尝试过LLDB的格式化程序,但他们并没有完全正常工作。
这是我的UTF32格式化程序的最新版本:uint_least32_t
我尝试过的其他事情:
type format add -f unicode32 -C yes UTF32
type format add -f unicode32s -C yes UTF32
type format add -f unicode32[] -C yes UTF32
以及type format add -f unicode32* -C yes UTF32
和(UTF32*)
以及没有{。}}的所有人。
我还不确定此时还有什么可以尝试。
答案 0 :(得分:0)
更新:我现在已被告知OP想要为C而不是C ++编译,因此在问题中添加了相应的语言标记。
以下答案中的类型也可在C11以后版本中提供,因此本答复的其余部分仍适用。
尝试将您的UTF16 typedef更改为char16_t。这对我有用。
对于UTF32,char32_t
或wchar_t
都可以使用。
请注意,从字符串文字中分配变量时,字符串文字的类型必须匹配,如此(此代码需要C11 / C ++ 11或更高版本):
int main ()
{
const char16_t *s1 = u"s1 is char16_t";
const char32_t *s2 = U"s2 is char32_t";
const wchar_t *s3 = L"s3 is wchar_t";
return 0;
}
当我在return语句中放置一个断点并在控制台中打印这些变量时,我得到了这个:
(lldb) p s1
(const char16_t *) $0 = 0x0000000100000f44 u"s1 is char16_t"
(lldb) p s2
(const char32_t *) $1 = 0x0000000100000f58 U"s2 is char32_t"
(lldb) p s3
(const wchar_t *) $2 = 0x0000000100000f7c L"s3 is wchar_t"
(lldb)
您也可以将鼠标悬停在它们上面或“本地人”中看到它们。窗口。
C11 / C ++ 11中提供的全部字符串文字描述为here(C)和here(C ++)。
要回答您在评论中提出的问题,不需要头文件。这些都是内置类型。如果您的编译器反对这些,请在Xcode的项目的构建设置中检查您正在使用的C / C ++版本。