00:01
接着我们来看一下编译连接和运行的一个详解。呃,刚才呢,我们已经把编译连接和运行做了一个。呃,流程图的说明,这里我们再把它的概念再给他捋一下,因为在这个后面,同学们在考试或者工作过程中呢,别人会对这个编译连接还有运行还要进行一个考核。呃,我们来看什么叫做编译,编译刚才其实我已经说的很清楚了,就是把这个C的源代码通过编译器将其编译成目标文件,这个就叫编译。那么在这个编译的过程中,如果你的程序中没有任何错误,就不会有任何提示。在debug里面呢,就会出现一个呃,Debug这个目录下面就会出现hello.obj这么一个文件,该目,该文件称之为目标文件,但问题来了,如果你这有错误会怎么样呢?大家看假如哈,同学们,假如我们这个代码里边有错误,比如说同学们可以看到。
01:06
同学们可以看到,假如我这样写了一句话。In。A等于十。好,嗯,我做了一个这个分号,同学们看这段代码从这里,从这个编译,编译编辑的过程是没有报错的,但是同学们看,当我运行时。同学们看它会有什么提示信息没有?大家有没有发现他在这说发生了错误?为什么发生了错误呢?我们来看它提示什么信息。大家可以看到他说在你的这个hello c这个地方有个语法错误。这个语法错误的原因就是因为你把这个int a写在了print f的后边,如果你把这个写在前面,同学们可以看到,假如我这样写的,同学们假如我这样写的,你看我再次去进行一个运行,它就不会报错。
02:07
同学们可以看到这个时候他就没有报错,而且呢,会弹出这个hellowood。那换言之就是如果同学们看啊,假如我们这个程序没有错误呢,你就过了编译就没有问题,如果有错误,那么它就会给你提示相应错误。啊,就说如果有错误就提示这个就是编译的过程会出现的,那么还有一个叫连接,连接,刚才其实我已经讲过了,他会把这个目标文件通过连接程序将其运行需要的这个库文件连接成ex文件,对,那如果你的库文件写错了。或者说库文件本身在在这个连接过程中出现问题呢,他也会给你提示错误。那看我们第二句话,如果程序没有错误,不会有任何提示,同时呢,在debug目录下面会生成一个hello.xe当然这个地方应该准确的讲不是哈罗了,而是我们的项目名称。
03:01
对吧,是我们的项目名称,项目名点X1,而且这个文件呢,我们就称之为可执行文件,那有些同学可能会问到,为什么需要连接文件呢?为什么需要连接库文件呢?就是为什么你这有个OB结了。你这有个O节,为什么还要跟这个库文件关联,要连接成连接才能形成一个exe呢?原因是这样子的,同学们听我说,因为我们C程序中呢,会使用到C程序库的内容,比如说你会用到SDDIO,刚才我们的输出指令就会用到它,再比如说你可能还会用到sdd lib这个库文这个头文件里面定义的其他的函数。那这些函数呢?其实不是程序员自己写的,而是系统提供的,因此需要连接。就你不要,如果你不写连接的话,你会发现它运行的时候,它根本运行不起来。而且大家有没有发现,当你使用这个连接,连接过后,你会发现生成的exe呢,这个比目标,比原先这个目标文件大了很多,大家来看一下是不是这样子的,同学们,我们还是定位到这个位置。
04:10
比如说我还定位到我们项目的,我们项目写的这个位置,项目写的位置在哪里呢。啊,我在这儿找一下啊。好,这个这个是我们的项目的存放的位置,对不对,然后呢,我给同学们找一下。我们看看是不是目标文件比我们执行文件大了很多。从而证明连接会用到,会把连接库的资源也导进去。大家可以看到,我们生成的目标文件OB其实只有4K。大家看是不是只有4K啊。记住4K,当我们生成的exe文件呢?Exe文件大家看在这个debug里面,你们有发现它变成多大了,变成了27K。由4K变到了27K,为什么会这么大?
05:00
为什么会多了这么多内容呢?就是因为你在这个连接的过程中,就是在连接的时候,你会把库文件里面的一些资源把它。放到一一起,一起给它连接到我们的这一个exe文件里面去,因此呢,这个文件就会变大,明白了,紧接着我们再来看运行,运行我们有了可执行的E文件,这个文件就是可执行的,而且这个可执行的程序呢,它是一个二进制文件。啊如如果同学们现在不了解什么是二进制,可以先忽略,其实就是就是这个0101的这种这种二进制文件哈,好C程序还有一点同学们一定要注意,对于我们初学者要注意的地方就是什么呢?我们如果修改了这个哈,点C。你需要重新编译链接,生成新的ex文件才执行,才会生效。打个比方,同学们看,如果说如果说我在这里把这个hello world加了一句话叫做你好。
06:04
你好,你看我保存了。保存了过后,其实这一个你你保存,你你把这个保存了,是不是你保存完了过后,你看你在这里面去执行这个E文件,你发现它根本没有变化。是不是没有提示哈,你好,那几个字啊,说明什么,说明你没有编译过,那他同学们看我来编译一下,那编译的话呢,也可以这样走,同学们这一个按钮叫做它其实是把编译连接和执行放在一起了,那如果说你只想编译,也就说如果说你只想完成到这一步怎么办呢?说老师我这有源码,我只想形成这个exe文件,但是呢,我不想去运行。有没有这种需求也有可能,对不对?你只想去把你的源码生成目标文件,再让这个目标文件跟库文件进行一个连接,得到一个ex文件就可以了,但是我不想去运行,那怎么办呢?同学们听我说,如果你只想编译一下,那同学们点生成,这有一个叫做生重新生成解决方案。
07:09
这样子呢,他只会得到这个exe文件,但是并不会执行,大家看我运行。好,你看我这儿做完了过来看。他已经全部成功生成了。但是有没有发现他会告诉你,诶,我已经给你生成了一个ex文件呢?大家看这里提示了一句话,他说你好,我已经给你生成了一个这样的ex文件,但是我没有执行。你看如果执行的话,不是会弹出来一个黑框吗?或者那个控制台吗?是不是没有啊,这说明他只是得到了exe文件,但是并没有去执行,那也是同学说有些同学老师你现在执行一下,看看是不是有变化,大家看我还到这里来,首先你看这个时间就已经发生变化了,对不对,已经发生变化了,好,我们现在呢,来运行值,来运行值走。你看是不是有多了你好两个字。
08:00
是不是好,这也就是我们所说的这么一个流程,好了,同学们,那这个就是我们讲的一个注意事项。那最后呢,还有C程序开发,还有几个注意事项,我要跟大家聊一下,第一个。关于C程序的主体结构,我大家写一写。那么一个程序的主体结构是什么样子的呢?我们以这个文件来进行讲解哈,以这个文件来讲解,大家看,首先第一步呢,它有这么一个头文件,引入头文件。它是有,如果需要引入头文件,就include包进来,这个是我们的组,这个地方我再做一个说明。说明二。第一个同学们可以看到,这个命呢是一个函数,函数现在大家还不知道,所以说你先听一下,它是我们程序的执行入口。也就是说即。程序是从是从main函数开始执行的,执行也就是说他第一句话执行的是这句话明白。
09:03
然后再往下面移一条语句,一条语要先执行这条语句,执行完了,执行这条语句,执行完了再执行这条语句,一句一的执行。这个就是所谓的从main函数开始执行的这么一句话,那么同学们有看到这里还有一个VO表示什么呢?表示它表示。表示函数main函数这样学啊,Main函数没有返回值。那也就是说将来呢,我们还会接触到有返回值的函数,好,那这些大家看这里面的这一部分。就是这个一段大括号里面的东西是什么呢?这就是我们的函数题,我写到这里来,第三句话就是me。小括号里面这个里边就这个括号里面。我我不管你有多少啊,这里面有多少括号,这里面写的我们统称为函数题。
10:01
函数体里面是什么呢?集就是一条一条的语句,一条条的语句,你比如说你这个就是一条语句。这个呢,又是一条语句,这又是一条语句。明白,好,这就是我们这一个,呃,所谓的C程序的一个主体结构,那主体结构我们再写一下,就是这里面有个include。什么什么什么,然后呢,这边有个贸易的,这是我们的函数名,主函数名好往里面写。OK,这边呢,就是我们的语语句。语句啊,语句一,当然还可能有语句二,对不对,可能有语句二。语句二。等等很多。那我们把这一块就是从这一块包起来呢,我们统称为函数体,大括号的内部我们称之为函数体。中的内容。中。的内容啊,内容就是大括号包起来的,包括起来的包包含包括的包括内容称之为,称为什么呢?称为函数体。
11:08
明白了,好,那这是第一个要给大家说的,第二点呢,我们的C程序的。这个扩展名呢,是以点C结尾的,也就是说我们要做C程序开发呢,它的后缀是点C,明白这个意思,还有一点,C程序的执行入口是main方法,呃,命main函数,我们叫函数比较好。对,叫函数C语言是严格区分大小写的,这什么意思呢?同学们注意听,就说大家,大家注意观察,我在这里写了一个int a等于十,那么如果你写这个int大A等于十,这两个是不一样的。就大写的A和小写的A是有区分的,明白这个意思吧,就是它是大小,大写小写是有区分的。啊,不会说,诶你是要写个A,这是大写的A,他会他会认为是同一个不会的。
12:00
当然了,你这个函数名也是大,比如说你你这个明明是小写的M,你要写个大写的M,那也不行。一些个大写的M,我们来看看会出现什么问题呢?来,同学们看我运行一把。对,运行一下。好,你看它会告诉你有错误对不对,他是不是告诉你生成失败了呀,这也告诉你生成错误了对不对,那我如果把它改成小写的,大家看小写的我再来运行一下。对不对,在运行,诶,我看看地方这个错误可能不是这的错误了。我看一下是哪里错误哈,哦,因为是这啊,刚才这个没有没有关闭,我再重新来一下。我再重新执行一下,同学们看,跑起来。你看这是神功执行了吧,是不是弹出hello,我hello word,你好,那我再把这个小写的改成大写的,我再来跑一下。爬起来。失败了吧,诶,所以说这一个我们字母呢,是不能够说大小写通用的,因此这句话大家记住,它是区分大小写的,C语言呢,每一条语句后面都需要有一有一个分号结尾,打个比方说,老师我在这里写了这么一个,呃,输出语句,我能够把这个省略吗?不能省略,你看一省略他马上就告报错了,他说error应该输入一个分号。
13:24
所以说我们每一条语句过后呢,必须带一个分号结束。还有一点,大括号是成对出现的,缺一不可,什么意思?举个例子,比如说我们在这里有一个括号,从这开始的,那么它的这个括号必须要勾上,你看啊,大家看,我把光标定到这。啊,你看我在这儿。把把这选中下面这本也就自然的给你对应上了,如果你把这个括号去掉,那这个程序呢,也是错的。这个程序也是错的,你看我给大家运行一下,它会告诉你这是错的。同样我们运行之。
14:02
跑起来。你看这个程序他是不是报错了呀,你看他这提示的信息很新奇,他说左侧的大括号怎么怎么怎么样是吧,匹配之前遇到文件结束了,就说没有匹配,言外之意就说没有匹配到跟他一个对应的大括号,要把这个带上。因此呢,这这几点就是我这里总结的这六点,是我们C程序开发的注意事项的最基本的东西。后面呢,我们还会有些其他需要注意的,还会,嗯,遇到一个我们就给大家介绍一个好了,关于C程序开发,以及我们讲的编译链接运行的。呃,再次说明,就给大家介绍到这里。
我来说两句