C语言从代码到可执行程序的过程

一个C语言程序,从代码到可执行程序的过程需要四个步骤:预处理,编译 ,汇编,链接。

1.预处理

预处理负责对源代码进行文本处理。主要处理代码中以字符#开头的命令。
有以下几个处理的地方:

(一)解析所有的条件预处理指令。
(二)解析定义的宏,将代码中使用的宏进行替换。
(三)删除注释
(四)解析 #include,将引入的头文件拷贝到当前命令位置
(五)添加行号号和文件标识(我们在vs上编译代码后报的错误中的行号就是这时添加的)。
(六)保留#program,留给编译过程。
完成这些后,以从c为后缀的文本文件生成了以.i为后缀的文本文件。

2. 编译

编译期间也要经过多个步骤,由.i的文本文件生成.s的文本文件。此文件为以汇编语句完成的代码
(一)词法分析。
(二)语法分析
(三)语义分析
(四)源代码优化
(五)目标代码生成
(六)目标代码优化

3.汇编

经过汇编阶段把汇编语句转换为机器指令,由.s的文本文件生成.o的二进制文件。

4.链接

链接器将所有二进制的目标文件和系统组件组合成一个可执行文件(.exe)。 (需要注意的是,我们在编译器是针对源文件进行编译的并且每个源文件都只会编译一次,所以汇编结束后每个源文件都会生成一个.o文件,这里的目标文件就是这些.o文件。)

C语言从代码到可执行程序的过程相关推荐

  1. 谈谈c语言程序如何变成可执行文件,C语言从代码变成可执行程序的步骤

    C语言从代码变成可执行程序的步骤: 预处理 -----> 编译 -----> 汇编 -----> 链接 ⒈预处理:去掉注释,加载头文件,代替宏定义,条件编译 需要文件:.c文件 生成 ...

  2. C语言源代码转变为可执行程序的过程

    Hello.c  #include<stdio.h>int main() {printf("Hello World\0");return 0; } 我们在VS下只需要C ...

  3. C/C++ - 从代码到可执行程序的过程

    (1)预编译 主要处理源代码文件中的以"#"开头的预编译指令.处理规则见下: 删除所有的#define,展开所有的宏定义. 处理所有的条件预编译指令,如"#if" ...

  4. 将源程序变为可执行程序的过程

    将源程序变为可执行程序的过程 高级语言---->汇编语言---->机器语言 更具体的变换细节 源代码:就是我们用C/C++写的代码,后缀名是.c/.cpp 预处理器:它的作用有将我们导入的 ...

  5. C语言源程序怎么到可执行程序

    源程序(源代码)是指按照一定的程序设计语言规范编写的未经过编译的文本文件,是具有可读性的计算机语言指令.可以比作自己手写的程序代码. 可执行程序(Executable Program,EXE file ...

  6. 嵌入式编程C语言提高代码效率的14种方法

    嵌入式编程C语言提高代码效率的14种方法 1.在可能的情况下使用typedef替代define.当然有时候你无法避免define,但是typedef更好. typedef int* INT_PTR; ...

  7. 分块查找(完整案例与C语言完整代码实现)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  8. 最短路径之迪杰斯特拉(Dijkstra 算法)弗洛伊德算法(C语言完整代码实现)

    写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...

  9. c语言有趣代码_为什么C语言永远不会过时?

    直至今天还有人在喊着C语言都过时的语言了,还有什么值得去学的,看现在的python,php等语言现在用起来多简单,谁还去学习老掉牙的C语言,事实真的是这样的吗?笔者作为专门下载了这两种语言的底层源码. ...

最新文章

  1. 使用Ext Form自动绑定Html中的Form元素
  2. Python生成html邮件
  3. vscode 新建cpp文件_Visual Studio Code (vscode)编译C++
  4. quartz CronExpression表达式
  5. Linux Unix shell 编程指南学习笔记(第五部分)
  6. 华为一则面试题登上热搜;大众点评会员因点赞过多被处罚;Linux Kernel 5.12 发布|极客头条...
  7. ARC100C Linear Approximation
  8. PCIe Gen4 Equlization失败掉速到Gen3的问题排查
  9. 计算机推免资源(不定期更新)
  10. 六相PMSM电驱平台及电机相序、参数测试流程
  11. 用函数统计各分数段人数c语言,excel统计各分数段人数的函数
  12. Professional Microsoft Office SharePoint Designer 2007
  13. 题1000、1001、1002
  14. mingw-w64-install.exe
  15. 接口保护ESD防静电二极管选择ESDSRVLC05-4
  16. 判断两个单链表是否相交及找到第一个交点
  17. 互联网摸鱼日报(2022-10-11)
  18. 计算机组装步骤图文详叙,详叙法
  19. 什么是Tomcat?Tomcat是什么意思?
  20. 如何用条码打印软件实现条码数据扫描后立即打印?

热门文章

  1. 新手遇到的问题之charles代理
  2. 台式计算机m9870t,魅族m9t_魅族手机_thinkcentre m9870t
  3. 宝马旗下MINI数字化萌宠Spike亮相上海车展
  4. Vue中如何删除数组中指定值
  5. php 读取excel大文件,php 如何读大excel
  6. topy库的安装(拓扑优化软件)
  7. 查询某文件夹下所有EXCEL表格文件工作表行数和列数等信息
  8. spring cloud gateway 无故在/tmp文件夹下生成以synchronoss-file-upload开头大量文件夹
  9. 淘宝4月推虚假交易新规 违规或受48分重罚
  10. 女神节,买什么礼物可以保护眼睛?保护眼睛的护眼台灯分享