繁体   English   中英

如何在LLVM中定义全局变量并在C中使用它?

[英]How to define a global variable in LLVM and use it in C?

到现在为止,我只能通过这种方式找到:通过函数获得指向全局变量的指针。

LLVM:

@a = global i8 0
define i8* @ggvp_a () {
    ret i8* @a
}

C:

char* ggvp_a (void);

用法:

char* gvp_a = ggvp_a ();
*gvp_a = 8;
return *gvp_a;

(“ ggvp” —“获取全局变量指针”)

有没有更方便的方法?

这是一个像其他声明一样的外部声明-只需添加

extern signed char a;

到您的.c文件。

在引用全局变量的文件中,您必须告诉LLVM该变量存在:

傻子

@foo = global i32 0, align 4

bar.l

@foo = external global i32

define i32 @bar() #0 {
  %1 = load i32* @foo, align 4
  ret i32 %1
}

当您尝试从C源文件使用foo时,同样的情况也适用,在这种情况下,您必须将外部声明放在某处:

baz.c

extern int foo;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM