gpt4 book ai didi

c++ - LLVM:将全局变量链接类型设为 linkonce

转载 作者:太空宇宙 更新时间:2023-11-04 14:30:51 24 4
gpt4 key购买 nike

我正在使用 llvm 编译器生成 C 代码。

我在编译器中有以下代码,它在我的 C 代码中声明了一个全局变量:

GlobalVariable* gvar_int64_test = new GlobalVariable(M, 
IntegerType::get(M.getContext(), 64),
false,
GlobalValue::LinkOnceAnyLinkage,
0,
"test");

编译器并行运行以编译多个 C 文件。但我希望所有编译文件中名称为“test”的全局变量共享相同的值或地址。因此,我认为将其设置为链接类型的“LinkOnceAnyLinkage”可能会起作用。

但是,在跑传球时。它说:

invalid linkage type for global declaration
i64* @test

将其更改为 ExternalLinkage 不会引发此问题,但我确实需要它具有 linkonce 属性。

我想知道可能是什么问题?

感谢大家的潜在帮助

最佳答案

你把它放在哪里?在 .h 文件中?我真的不明白你所说的链接是什么意思[或者你为什么想要/需要它]

假设这是在一个文件中,例如 myheader.h,您需要的是这样的:

#ifdef DEFINE_GLOBAL
GlobalVariable* gvar_int64_test = what you specified ...
#else
extern GlobalVariable* gvar_int64_test;
#endif

在您的 .h 的#include 之前,只有一个 .cpp 文件执行:

#define DEFINE_GLOBAL
#include <myheader.h>

关于c++ - LLVM:将全局变量链接类型设为 linkonce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33424159/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com