如何在 LLVM C++ api 中声明字符串参数?例如,要声明
double
参数,我会这样做:
argTypes.push_back(Type::getDoubleTy(*context))
可以对字符串执行此操作吗?我知道字符串是 i8 的数组,但我只需要知道正确的函数调用即可。
我尝试在互联网上搜索,但找不到任何东西。
谢谢。
正如您所说,字符串可以表示为指向 i8 元素数组的指针,因此,为了表示字符串参数,您通常会使用 i8*,因为参数通常是指向某些数据的指针:
argTypes.push_back(Type::getInt8PtrTy(*context));
请记住,此表示假定您的字符串以 null 结尾(C 字符串)。如果要传递也包含其长度的字符串(C++ std::string 明智的),通常会传递一个包含指向数据的指针(i8*)和长度(i64 或其他整数类型)的结构.