请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

文件名问题

要实现 a.h 里定义的函数,必须有个 a.c 文件吗?.c文件的名字可以和.h文件的名字不一样吗?如果可以,那编译器怎么寻找它实现在那里呢?

正在回答 回答被采纳积分+3

1回答

bennyhuo 2021-06-19 15:31:30

必须提供相应的函数实现,但不一定在c文件当中,头文件其实也可以,但要注意被多个文件引入会有重复定义的问题,这要同学理解下宏展开的机制,我们在课程讲预编译的一章有提到。

C文件的名字不必与头文件一致,这更多是一种约定。编译完成之后每一个符号都会有自己的地址,链接器会负责完成符号到地址的转换工作。

0 回复 有任何疑惑可以回复我~
  • 提问者 天蝎卧凤先生 #1
    如果.c文件可以和.h文件的名字不一样,那么编译器怎么确定我的函数实现在哪里呢?
    回复 有任何疑惑可以回复我~ 2021-06-19 15:42:20
  • bennyhuo 回复 提问者 天蝎卧凤先生 #2
    编译的时候所有的源码是放一起编的,每一个函数都会有自己的地址,根据这个地址在运行时调用函数。你说的是怎么关联头文件和源码吧,编译的时候头文件直接展开,后面就没有头文件了,不存在关联的问题。
    回复 有任何疑惑可以回复我~ 2021-06-19 20:27:49
  • 提问者 天蝎卧凤先生 回复 bennyhuo #3
    好吧,谢谢老师
    回复 有任何疑惑可以回复我~ 2021-06-19 20:42:41
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信