LLVM IR全局变量和函数声明是否必须使用 "external "和 "extern_weak "链接类型?

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

LLVM红外联动型它说 All Global Variables and Functions have one of the following types of linkage: 首先,再列举几种联系类型,如 private, internal, common, appending 等。

在这一节的最下面,又写道 It is illegal for a global variable or function declaration to have any linkage type other than external or extern_weak..

我对这个文档感到困惑,因为我不明白为什么其他链接类型(如 private internal, common, appending)是被禁止的。

llvm llvm-ir
1个回答
2
投票

一个声明声明另一个链接单元(.o文件)将定义被声明的事物。因此,声明和定义必须都有这样的链接类型,它们是同一个东西。

被禁止的链接类型是那些由于某种原因而没有意义或不能工作的类型。private,例如--如果一个东西在两个不同的链接单位中被命名,那么被命名的东西怎么可能是私有的呢?它对哪个单位是私有的?等等。

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