运行C程序的内部逻辑

1.前言

在我们编写C程序代码并点击运行的时候,C编译程序与计算机会对所编写的代码进行一系列的处理,最终转换成计算机能够识别并执行的机器语言,从而通过计算机的输出设备呈现给我们。运行C程序的内部逻辑可以分为编辑、编译、连接和运行四个阶段。

2.编辑

编辑是指程序员通过代码编辑器编写代码,在C语言中当然是使用C语言的语法规范进行编程,编程得到的程序称为源程序,该程序文件的后缀应当选择为.c,说明我们编写的程序是C程序文件。

3.编译

编译分为两个阶段,一是预编译,也叫预处理;二是编译,即正式编译。

预编译是指通过预编译器(预处理器)对C程序中预处理指令进行编译预处理,例如#include<stdio.h>是我们经常使用的预处理指令,在预编译阶段,预编译器会将stdio.h头文件的内容读进来,取代#include<stdio.h>一行。由预编译处理得到的程序与其余的程序组合成一个完整的、可编译的源程序,然后再由编译器对该完整的源程序进行编译。

在编译阶段,编译器首先对程序的语法进行检查,查看我们编写的代码有无语法问题,如有,则发出错误信息,在程序员修改错误之后再次编译,直到没有语法错误为止,这时通过编译的程序会转换成二进制形式的目标程序,其文件后缀为.obj。

4.连接

在编译后形成二进制的目标程序后,该程序仍然不是完整的可执行程序,虽然二进制代码已经是计算机能够识别的语言,但是该目标程序并不是完整的,还需要对其进行连接处理,这时使用的是连接编辑程序。

比如,在我们编写C程序代码的时候,有时候会包含多个源程序文件,而一次编译只能得到与一个源程序文件对应的目标文件,因此,必须把每个源程序文件所编译成的目标文件连接起来,才是我们想要的完整程序。

之所以是我们想要的完整程序,是因为从编程者的视角看,这部分程序是我们编写的能够直观看到的所有程序,但在连接完成所有目标程序之后,还需要再与函数库相连接,这才是一个完整的可供计算机执行的程序,称为可执行程序,其文件后缀为.exe。

因此,即使我们只编写了一个源程序文件,仍然需要与函数库相连接,以形成可执行程序。

​​​​​​​

5.运行

运行阶段其实就是计算机运行可执行程序,并得到运行结果的过程,这时C程序的运行就到此为止了,但我们的编程往往还没有结束,因为有时候运行的结果与我们的预期相去甚远。

如当我们想要编写一个输出“Hello World!”的程序,结果运行时候输出了“ByeBye World!\n”,这并不是我们想要的答案,因此还需要回到我们所编写的程序中去进行修改,然后再经过以上的C程序运行的四个阶段,直到得出我们理想的结果。

6.总结

运行C程序代码会经过编辑、编译、连接和运行四个阶段,并需要用到相应的如编译器、连接编辑程序等程序,但其实我们在实际的编程过程中,往往只需要编写然后点击运行就可以了,这是因为我们现在通常使用的是IDE,即集成开发环境,包括了代码编辑器、编译器、调试器、图形用户界面等,其集成了程序的编辑、编译、连接和运行等操作,所以我们前文说的四个阶段都是通过一个软件来完成的,使用起来十分方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淮河两岸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值