在LLVM中声明参数的字符串类型

问题描述 投票:0回答:1

如何在 LLVM C++ api 中声明字符串参数?例如,要声明

double
参数,我会这样做:

argTypes.push_back(Type::getDoubleTy(*context))

可以对字符串执行此操作吗?我知道字符串是 i8 的数组,但我只需要知道正确的函数调用即可。

我尝试在互联网上搜索,但找不到任何东西。

谢谢。

c++ compiler-construction llvm language-design
1个回答
0
投票

正如您所说,字符串可以表示为指向 i8 元素数组的指针,因此,为了表示字符串参数,您通常会使用 i8*,因为参数通常是指向某些数据的指针:

argTypes.push_back(Type::getInt8PtrTy(*context));

请记住,此表示假定您的字符串以 null 结尾(C 字符串)。如果要传递也包含其长度的字符串(C++ std::string 明智的),通常会传递一个包含指向数据的指针(i8*)和长度(i64 或其他整数类型)的结构.

© www.soinside.com 2019 - 2024. All rights reserved.