UEFI编程:如何初始化一个CHAR16 Unicode字符串?

UEFI programming: How to Initialize a CHAR16 Unicode String?

我必须使用一些 char16 宽的字符串进行 uefi 编程。我怎样才能轻松地初始化它们? CHAR8 很简单:

CHAR8 *Str = "yehaw[=10=]";

同时 CHAR16 很辛苦,所以我选择了这个初始化:

CHAR16 *Str;
Str = AllocatePool(6*2); //AllocatePool allocates bytewise
Str = ('y','e','h','a','w','\o');

所以问题是初始化 CHAR16 字符串的正确和最简单的方法是什么?

试试这个

CHAR16 *Str = u"yehaw[=10=]";

如果您有 c 标准库并且正在使用符合 C/C++ 的编译器,通常在字符串前加上 L 对 declared strings.As in :

 CHAR16 *Str =  L"yehaw";

有效。但是,为什么不使用普遍接受的类型

 wchar_t

?

"An array with element type compatible with a qualified or unqualified version of wchar_t, char16_t, or char32_t may be initialized by a wide string literal with the corresponding encoding prefix (L, u, or U, respectively)" C11 §6.7.9 15

如果 CHAR16char16_t 相同,则使用

Str = u"yehaw";