C语言程序代码神奇效果如何运行

 外行人看代码是很麻烦的事情,只能看到神奇的程序员biubiu几行代码就能搞出很神奇的效果。为什么程序员简单的几行代码就可以打印出我们想要的结果呢,下面这篇文章就介绍下C语言程序的运行过程。


 C语言的运行过程主要分为四大过程:预处理、编译、链接、加载


 1.预处理


 预处理是C语言特有的功能,关于它更多地叙述会在后面说明,这里简单的说下。程序运行开始,预处理器(preprocessor)会扫描源代码,通过程序员给出的预处理指令(directive)(格式为:# + 指令关键字)对程序进行预处理操作,这个过程就像是对程序进行了再一次的编辑,对程序进行添加和修改。处理完毕后自动进入编译阶段。


 2.编译


 编译过程又可以分为两个阶段:编译和汇编。


 编译:修改后的源代码(.c文件)通过编译器(compiler)检查是否有语法错误,确认所有的高级语言指令都符合语法规则后,将其转换为功能等效的汇编代码。


 汇编:


 这个过程汇编器会将汇编语言代码翻译成机器指令(二进制代码),也叫做目标代码,生成目标文件(在windows下的后缀名是.obj,unix系统下有.o、.a、.ko等文件)。


 扩展:


 目标文件由“段”组成,一般至少有两个段:


 代码段:该段中所包含的主要是程序的指令。该段一般是可读和可执行的,但一般却不可写。


 数据段:主要存放程序中要用到的各种全局变量或静态的数据。一般数据段都是可读,可写,可执行的。


 3.链接


 上面的步骤已经为二进制文件,也就是说CPU可以识别,为什么还要这个步骤呢?大家想下,我们在编写程序的时候是不是用到了很多库函数,而且一般我们会有多个 .c文件 分别被编译成多个 .obj文件,链接的过程就是将各个.obj文件和C语言库函数一起组合生成一个可执行文件的过程。


 链接器(linker)把由编译器产生的目标代码和任何其它附加代码整合在一起,这样才最终产生了完全可执行的程序。


 4.加载


 加载器(loader)把可执行文件从外存加载到内存并进行执行。


 以上四个过程都是自动实现,只是简单的说了一下,大家可以在iOS开发入门教程​-C语言百科观看自行扩展学习更复杂的内容,这里不再赘述更多内容。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值