gpt4 book ai didi

c++ - 链接器如何知道外部函数的定义在哪里?

转载 作者:可可西里 更新时间:2023-11-01 18:14:57 26 4
gpt4 key购买 nike

我读了几篇文章并得出结论,extern 告诉编译器“这个函数存在,但它的代码在其他地方。不要 panic 。”但是链接器如何知道函数的定义位置。

我的案例:-我正在研究 Keil uvision 4。有一个头文件 grlib.h,主要功能在 grlib_demo.c(它包括 grlib.h)中。现在,有一个在 Circle.c 中定义并在 grlib_demo.c 中调用的函数 GrCircleDraw(),还有一个语句

extern void GrCircleDraw(all arguments);

在 grlib.h 中。我的问题是链接器如何知道 GrCircleDraw() 的定义在哪里,因为 Circle.c 不包含在 grlib.h 和 grlib_demo.c 中

注意:- 文件 grlib.h 和 Circle.c 位于同一文件夹中。代码运行成功。

最佳答案

简单的回答是“编译器不需要知道,但链接器必须能够找到它”。通过多个 .o 文件或库,链接器必须能够找到 GrCircleDraw 函数的单个定义。

关于c++ - 链接器如何知道外部函数的定义在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879081/

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