gpt4 book ai didi

c++ - 为什么 "extern int &c;"工作正常?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:03:17 26 4
gpt4 key购买 nike

在C++中,必须初始化引用变量。 诠释 &a;//错误

static int &b; // Error

但是

extern int &c; // No error

为什么编译器不为 extern 说明符引用给出错误?

最佳答案

extern 关键字是编译器的指令,您现在正在声明一个符号,该符号将在链接期间填充,取自另一个目标文件。初始化预计发生在定义实际符号的地方。

如果你有一个 a.c 文件

int foo;
int &bar = foo;

还有一个 b.c 文件

extern int &bar;

当您将文件 b.c 编译成 b.o 时,编译器会将 bar 的符号留空。链接程序时,链接器需要在 a.o 中找到导出的符号 bar,然后将 b.o 中的空白符号替换为 a.o 中的 bar

如果链接器无法在链接目标文件中的任何地方找到所需的符号 - 将发出链接器错误(不是编译器错误)。

关于c++ - 为什么 "extern int &c;"工作正常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47237933/

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