加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C – 如何在没有include语句的情况下包含c源文件

发布时间:2020-12-16 09:42:29 所属栏目:百科 来源:网络整理
导读:我已经采取了暴跌并且正在学习C.这是一个相当不错但可管理的学习曲线来自脚本(php,perl)背景,只有一点C#. 我已经使用了网站“学习C艰难的方式”,到目前为止我已经相当好地掌握了(我认为),但我无法理解其中一个练习的这一部分: http://c.learncodethehardway
我已经采取了暴跌并且正在学习C.这是一个相当不错但可管理的学习曲线来自脚本(php,perl)背景,只有一点C#.

我已经使用了网站“学习C艰难的方式”,到目前为止我已经相当好地掌握了(我认为),但我无法理解其中一个练习的这一部分:

http://c.learncodethehardway.org/book/ex19.html

他创建了四个源文件 – object.h,object.c,ex19.h,ex19.c

但我不明白如何包含object.c文件.

主要功能位于ex19.c,它有行

#include "ex19.h"

文件ex19.h有该行

#include "object.h"

但是object.h没有提到包含object.c.有趣的是object.c包含该行

#include "object.h"

是否存在某种隐含的包含,如果包含头文件,它将自动包含同名的c源代码?

解决方法

这是一个名为链接器的独立程序的工作.在C中,源文件需要访问其他C源文件的头文件,以便他们可以查看有关第一个文件可能要使用的第二个C文件定义的函数,类型和变量的信息.然后,每个C文件独立于其余文件进行编译.编译器的输出是一个目标文件.

为了构建最终程序,第二个称为链接器的程序进入并将所有目标文件组合到整个可执行文件中.该程序的任务是获取所有不同C文件的实现并相互交叉引用它们,这样每次一个C文件引用不同C文件中的函数或变量时,该引用实际上可以对适当的对象进行引用.

这就是您不需要包含.c文件的原因.一旦源文件有一个头文件,它就足够了解另一个文件,以便使用它为编译器提供的函数来验证它是否正确使用它们.然后链接器处理实际进行交叉引用的工作.您可以将编译器视为一个程序,它检查是否定义了函数,然后该程序将起作用.然后链接器实际检查以确保首先定义这些函数并在可执行文件中设置适当的链接.

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读