如何在Xcode调试窗口中更改unicode字符串的显示格式?

如何在Xcode调试窗口中更改unicode字符串的显示格式?,c,xcode,unicode,clang,lldb,C,Xcode,Unicode,Clang,Lldb,我有一些类型定义的类型来保存unicode字符串,UTF16,它被定义为uint\u-least16\u-t,和UTF32,它被定义为uint\u-least32\u-t(与标准中字符(16 | 32)的定义兼容) 在Xcode的调试器中,将显示UTF32字符串 我试过LLDB的格式化程序,但它们并不完全有效 下面是我的UTF32格式化程序的最新版本:type format add-f unicode32-C yes UTF32 我尝试过的其他事情: 类型格式添加-f unicode32s-C是

我有一些类型定义的类型来保存unicode字符串,
UTF16
,它被定义为
uint\u-least16\u-t
,和
UTF32
,它被定义为
uint\u-least32\u-t
(与标准中字符(16 | 32)的定义兼容)

在Xcode的调试器中,将显示UTF32字符串

我试过LLDB的格式化程序,但它们并不完全有效

下面是我的UTF32格式化程序的最新版本:
type format add-f unicode32-C yes UTF32

我尝试过的其他事情:

类型格式添加-f unicode32s-C是UTF32

类型格式添加-f unicode32[]-C是UTF32

类型格式添加-f unicode32*-C是UTF32

以及所有带有
(UTF32*)
(UTF32[])
以及不带的人


我不确定在这一点上还有什么要做的。

< > >强>更新:我现在被告知,OP要编译C,而不是C++,所以在这个问题上添加了适当的语言标记。 以下答案中的类型在C11以后的版本中也可用,因此此答案的其余部分仍然适用


尝试将UTF16 typedef更改为。这对我有用

对于UTF32,可以使用
char32\u t
wchar\u t

请注意,当从字符串文本分配变量时,字符串文本的类型必须匹配,如下所示(此代码需要C11/C++11或更高版本):

当我在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中提供的字符串文本的完整范围在(C)和(C++)中进行了描述


要回答您在评论中提出的问题,不需要头文件。这些都是内置类型。如果编译器反对这些,请检查XCCODE中的项目的生成设置中使用的C/C++版本。

MACOS不支持CHAR160T或CHAR32×T,因此首先要创建这些类型。你在用什么操作系统?我在High Sierra。你能澄清一下“MacOS不支持char16\u t或char32\u t”是什么意思吗?编译器当然支持它们。
uchar.h
在MacOS上不存在。。。char16\u t和32未定义。@watwat更新了我的帖子,希望这能澄清问题。好的,编译为C11,问题解决了。是我添加了标签,检查历史记录。如果你想享受在这个网站上的时光,你需要冷静一点。
(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)