c语言头文件的问题

fuyou001 2011-05-07 04:46:48
假设现在有一个头文件为test.h文件
test.h里只有一个void test()的函数原型

test.c实现了test.h里的test函数


现在一个Hello.c文件里有
引入自己定义的头文件
#include "test.h"

并在文件里调用了test 函数


现在的问题是

在预处理阶段,#include test.h被替换成test.h里的内容

这样有了函数原型,就不会报找不到test函数了

但在链接阶段,编译器怎么去test方法真正的实现呢??
...全文
114 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
vipvvv 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 delphiwcdj 的回复:]
参考下这个
[/Quote]
讲的比较透彻
qq120848369 2011-05-07
  • 打赏
  • 举报
回复
各源文件独立编译,此时只需要依赖声明,不需要依赖实现.

链接阶段,各源文件里的声明会在全局作用域里找实现,找不到就出错,重复定义也会出错.
fuyou001 2011-05-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 delphiwcdj 的回复:]
在link的时候ld会在.o文件中寻找函数的具体实现
[/Quote]
在所有.o文件里找吗
delphiwcdj 2011-05-07
  • 打赏
  • 举报
回复
参考下这个
delphiwcdj 2011-05-07
  • 打赏
  • 举报
回复
在link的时候ld会在.o文件中寻找函数的具体实现
qiyu1988 2011-05-07
  • 打赏
  • 举报
回复
test.h 里面声明了test()原型,所以链接的时候链接器会到库文件查找这个函数
qing760416112 2011-05-07
  • 打赏
  • 举报
回复
每个函数都有函数地址。。。。
fuyou001 2011-05-07
  • 打赏
  • 举报
回复
是的,我就是想理解编译器到哪去找test函数真正实现,还是函数原型?

大体说下是怎么寻找的,谢谢


bdmh 2011-05-07
  • 打赏
  • 举报
回复
编译原理吗

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧