如何在llvmlite中创建动态char数组?

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

基于 llvmlite 文档,我可以创建静态数组,如下面的代码片段所示。

ir.Constant(ir.ArrayType(ir.ArrayType(i8, STR_SIZE), ARR_SIZE), elements)

但是我可以在 llvmlite 中创建动态数组或将上面的变量转换为 i8.as_pointer().as_pointer() 类型吗?

python c llvm llvmlite
1个回答
0
投票

char**
不是一个数组,它是一个指向
char
的指针。 C 程序经常使用这样的指针并假装指向的类型是其他类型。

LLVM 可以让您以相当相似的方式做同样的事情。如果仔细观察 getelementptr 指令,您会发现它同时接受指针参数和类型参数。类型是指向的类型。如果您向 gep 传递一个数组类型、一个指针和一个索引,它会假装该指针指向该类型并返回一个指向具有指定索引的数组条目的指针,然后您可以加载并将其视为值。

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