c语言的工程文件有什么作用,C语言教程(008)-这些乱七八糟的文件是什么?

这些乱七八糟的文件是什么?

编译一个项目之后,你会发现在项目目录里多了很多文件,这些文件是什么?有什么作用?

1、源文件(Source File)

我们之前写了几段代码了,创建了几次以.c为后缀的文件,将你写的代码保存起来的文件就叫源文件。

每种编程语言的源文件都有特定的后缀,以便于编译器对源文件的识别。一般来说,后缀名都是以编程语言名称来命名的。例如Java源文件的后缀是.java,Python的源文件后缀是.py。

源文件只是一个文本文件,内部没有特殊格式。所以,就算你创建一个.txt的文本文件,把代码保存进去,再将.txt改为.c,对编译器依旧有效的。总而言之,后缀仅仅是为了让编译器识别它,让程序员更容易理解。

2、项目(project)

一个完整的项目往往包含很多功能,实现这些功能不仅需要成千上万行代码,还有可能包含图片,音视频等资源文件。我们不能将所有代码都写在一个源文件里,这样不仅打开缓慢,开发和维护也会极为困难。也不能将种类繁多的资源文件放在一起。

我们总是建议将不同功能的代码写在不同的源文件中,将不同的资源文件分类管理。为了有效地管理这些种类繁杂、数目众多的文件,我们有理由把它们都放到一个目录(文件夹)下,并且这个目录下只存放与当前程序有关的资源。实际上 IDE 也是这么做的,它会为每一个程序都创建一个专门的目录,将用到的所有文件都集中到这个目录下,并对它们进行便捷的管理,比如重命名、删除文件、编辑文件等。

这个为当前程序配备的专用文件夹,在 IDE 中也有一个专门的称呼,叫“Project”,翻译过来就是“工程”或者“项目”。

3、工程类型/项目类型

“程序”是一个比较宽泛的称呼,它可以细分为很多种类,例如:

有的程序不带界面,完全是“黑屏”的,只能输入一些字符或者命令,称为控制台程序(Console Application),例如 Windows 下的 cmd.exe,Linux 或 Mac OS 下的终端(Terminal)。

有的程序带界面,能够使用鼠标点击,称为GUI程序(Graphical User Interface Program),例如 QQ、迅雷、Chrome 等。

有的程序不单独出现,而是作为其它程序的一个组成部分,普通用户很难接触到它们,例如静态库、动态库等。

不同的程序对应不同的工程类型(项目类型),使用 IDE 时必须选择正确的工程类型才能创建出我们想要的程序。换句话说,IDE 包含了多种工程类型,不同的工程类型会创建出不同的程序。

4、编译器是如何编译的?

当你启动编译器,就开始以下步骤:

将源文件转换成中间文件。如果有多个源文件,则会生成多个中间文件,中间文件的后缀是.obj。C使用这种分而治之的方法方便对程序进行模块化,可以独立编译单独的模块,如果只更改某个模块,不必因此重新编译其它模块。中间文件已经非常接近可执行文件了,它们都是二进制格式,内部结构也非常相似,但仍不是可执行文件。

链接器将这些中间文件组合起来,另外,链接器还将你编写的程序与预编译的库代码合并,例如上述程序中我们经常用到的printf()函数。中间代码文件中并不包含该函数的代码,它只是包含了使用该函数的指令。而该函数的代码储存在另一个被称为库的文件中。此外,中间代码文件还缺失启动代码。启动代码充当着程序和操作系统之间的接口。所以,连接器的作用就是,把你编写的目标代码,系统的标准启动代码和库代码这3部分合并成一个文件,即可执行文件。可执行文件的后缀是.exe。可执行文件的执行不依赖于目录中的其它文件,你将它单独拿出来,也是可以执行的。

注意:这就是为什么,你的写了一个最简单的程序之后,文件夹里会多出一些文件。需要注意的是,不同的开发工具对这些文件的管理方式不同,例如你用Visual Studio创建一个项目后,会多出一个.sln文件,这个是解决方案,解决方案比项目又高一层,也就是说,一个解决方案包含多个项目。(解决方案文件通常很小,这是因为它里面并不包含所有项目的文件,而是只包含索引,这样你打开一个解决方案,就能发现同时打开的还有该目录下的一个或者多个项目。)

  • 0
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值