gperf信息页声称如果您指定了-l,那么
输入文件中的关键字可能包含NUL字节,用字符串语法编写为\000或\x00,由gperf生成的代码将像对待任何其他字节一样对待NUL。
但是,当我通过gperf -L C++ -l运行这个输入文件时
foo
\000bar\000
\x00baz\x00
bat我得到:
<snip>
static const char * wordlist[] =
{
"", "", "",
"foo",
"", "", "", "",
"bat",
"", "",
"\\x00baz\\x00",
"", "", "", "",
"\\000bar\\000"
};
<snip>它将\000和\x00视为文字值,而不是空字节。
如何正确使用gperf字符串中的空字节?
发布于 2020-04-10 09:25:38
您可以在“关键字条目格式”一节中找到更精确的输入语法文档。
它可以以两种方式给出:简单的名称,即没有环绕的字符串引号,或用双引号括起来的字符串,在C语法中,可能带有反斜杠转义,如\“或\234或\xa8 8。
在gperf的测试套件中,您可以找到一个例子
"\x00\x45\x00\x6E\x00\x67\x00\x6C\x00\x69\x00\x73\x00\x68", "English", "en_GB.UTF-8"https://stackoverflow.com/questions/61133335
复制相似问题