首页 > 解决方案 > 如何使用 LLVM 访问外部结构?

问题描述

我在我的模块之外有这个结构,在我的 C++ 实现中:

struct A {
  int a;
};

我如何创建这个接受 A 指针并更改它的函数?像:

define void @func(%struct.A*) {
  %2 = alloca %struct.A*, align 8
  store %struct.A* %0, %struct.A** %2, align 8
  ...
}

还是不可能?我需要在我的模块中创建一个结构并更新外部结构吗?

标签: c++structllvmexternalllvm-c++-api

解决方案


是的,类型声明应该出现在它们使用的每个模块中。C++ 也是如此——struct A如果你没有在源代码中声明它,或者任何包含,你就不能使用它。

但是,您似乎在代码中对指向该结构的指针进行操作。AFAIK,在这种情况下,声明一个空结构并使用指向它的指针是安全的。


推荐阅读