作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
当从现有的 AST 构建 IR 时,我的 AST 有一些字符串值(在编译时它们是从 std::string
构建的)并且我想将它们安全地设置为 llvm::Value
用作表达式的一部分。
在这种情况下,我不需要在运行时绑定(bind)字符串,因为字符串值仅用于在编译时将内容解析为变量、函数或类(该语言不支持 native 字符串类型)。
什么是将我的字符串内容保持为 llvm::Value
并且仍然能够在编译的后期阶段检索它的最佳方法(当构建嵌套表达式时)?
更具体地说,如果我将 llvm::Value
设置为:
llvm::Value* v = llvm::ConstantArray::get(llvmContext, myString.c_str());
如何安全地检索字符串值? llvm::ConstantArray
是包装字符串的合适方法吗?
最佳答案
是的,您应该在这里使用 ConstantArray。为了稍后检索值,只需使用 ConstantArray::getAsCString()。如果您打开了断言,它会在出现问题时断言(例如,您将尝试从没有零终止符的数组中获取字符串)。
关于c++ - LLVM 字符串值对象 : How can I retrieve the String from a Value?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8377735/
我是一名优秀的程序员,十分优秀!