C程序编译过程:
预处理、编译、汇编、连接;
一 预处理
预处理的过程主要处理包括以下过程:
- 将所有的#define删除,并且展开所有的宏定义
- 处理所有的条件预编译指令,比如#if #ifdef #elif #else #endif等
- 处理#include 预编译指令,将被包含的文件插入到该预编译指令的位置。
- 删除所有注释 “//”和”/* */”.
- 添加行号和文件标识,以便编译时产生调试用的行号及编译错误警告行号。
- 保留所有的#pragma编译器指令,因为编译器需要使用它们
二 编译
把预处理完的文件进行一系列的词法分析,语法分析,语义分析及优化后生成相应的汇编代码;
三 汇编
将汇编代码转变成机器语言;
四 链接
静态链接:将所依赖的静态库编译进可执行文件中;
动态链接:链接时仅加入一些描述信息,程序运行时,再从磁盘中找到相应的动态库载入内存执行;
标签:汇编,行号,程序,预处理,编译,指令,过程,链接 来源: https://www.cnblogs.com/tyghl/p/14847134.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。