Ocaml 从LLVM字符串常量中获取字符串
我正在使用LLVM绑定读取OCaml中的LLVM位代码文件。在该文件中,有一个全局字符串常量定义如下:Ocaml 从LLVM字符串常量中获取字符串,ocaml,llvm,Ocaml,Llvm,我正在使用LLVM绑定读取OCaml中的LLVM位代码文件。在该文件中,有一个全局字符串常量定义如下: @.str1 = private unnamed_addr constant [6 x i8] c"x > y\00", align 1 我有一个与这个常数对应的llvalue,我想从中得到字符串“x>y”。我可以做的一件事是使用string\u of \u llvalue(全局\u初始值设定项\u常量)获取字符串“c\”x>y\\00\”,然后提取引号之间的部分,然后解析该部分中的转
@.str1 = private unnamed_addr constant [6 x i8] c"x > y\00", align 1
我有一个与这个常数对应的llvalue
,我想从中得到字符串“x>y”
。我可以做的一件事是使用string\u of \u llvalue(全局\u初始值设定项\u常量)
获取字符串“c\”x>y\\00\”
,然后提取引号之间的部分,然后解析该部分中的转义序列。然而,对我来说,这似乎不是一个很好的解决方案
C++ API有函数>代码> COSTANSTATABASESETION::GETASString ,我可以用来访问常量的字符串值,但是我不能用OCAM绑定来解决同样的问题。除了为
getAsString
编写自己的绑定之外,解析string\u of llvalue
的结果确实是唯一的选择
然而,在最新版本的OCaml绑定中,这可以通过string\u of_const
轻松实现。如果给定的llvalue
是字符串常量,则它接受llvalue
并返回包含字符串内容的Some
,否则返回None