是否可以将llvm::FunctionType转换为C/C++原始函数指针
Possible convert a llvm::FunctionType to C/C++ raw function pointer?
我们可以将llvm::FunctionType的对象转换为C/C++风格的函数原始指针吗?
C/C++风格的函数原始指针示例:uint64_t (*funPtr)(uint64_t* args);
llvm::Function
表示为一个抽象语法树。不能调用它,就像不能调用数组、列表或任何其他数据结构一样。
相反,您需要利用LLVM的ExecutionEngine
功能来调用llvm::Function
s。在内部,引擎会将其编译为本机可执行代码,并向该代码返回void*
(我不记得API的详细信息,但类似的内容(。然后,您将能够将此指针强制转换为函数指针,并最终使用它来调用函数。
我不能100%确定llvm
的功能,但n4659中的文本可能会有所帮助:
有条件地支持将函数指针转换为对象指针类型,反之亦然。这种转换的含义是由实现定义的,但如果实现支持双向转换,则将一种类型的prvalue转换为另一种类型并返回(可能具有不同的cv限定(将产生原始指针值。
我很确定函数指针与常规指针不同,因此这些转换是有问题的。我认为他们在这个堆栈溢出问题中详细讨论了这个问题。
相关文章:
- 将浮动的heightmap数组导出为16位原始值
- 给定一个向量,如何找到该向量的所有子集和的原始索引
- 有没有办法从非C/C++文件中读取C++原始字符串文字的内容
- 是否可以将llvm::FunctionType转换为C/C++原始函数指针
- 如何将原始字节附加到 std::vector?
- 从堆栈分配的原始指针构造智能指针
- 如何重写全局方法名称以在调用原始方法之前将我的代码推到前面
- 将unique_ptr分配给原始指针
- 是否可以从 OpenGL 缓冲区获取原始大小的像素?
- 使用 OpenSSL 从内存中读取原始 SSL/TLS 证书
- 如何将唯一指针的 std::vector 转换为原始指针的 std::span?
- 从原始字节解码协议缓冲区(以 C++为单位)
- C ++如何在原始抽象类中创建一个函数,该函数接受派生类的输入
- C++:尝试使用等效的 STL 算法消除原始循环
- 如何在连接器 C++ 中将原始字节转换为字符串
- 通过引用传递类不会更改原始类
- 实现使用模板化类而不使原始类成为模板的类
- 如何在 2d 矢量 c++ 中复制元素并将其放在原始元素旁边
- 打印原始阵列和更改的阵列
- <Base> <Derived> 具有相同原始指针共享引用的 shared_ptr 和 shared_ptr 实例是否计数?