中山网站建设推荐,iis 新建网站没有文件夹权限,网站开发工资怎么样,4成都网站建设最近在看C语言的基础知识#xff0c;之前只关注编译最后生成的二进制文件#xff0c;不知道编译过程#xff0c;学习到了整理一下。
一、C语言编译过程
过程如下#xff1a;
预编译----编译----汇编----链接器输出----二进制文件。
编译器将编译分为预…最近在看C语言的基础知识之前只关注编译最后生成的二进制文件不知道编译过程学习到了整理一下。
一、C语言编译过程
过程如下
预编译----编译----汇编----链接器输出----二进制文件。
编译器将编译分为预处理、编译和汇编。
连接器把各个独立的模块链接为可执行程序。
静态链接在编译期完成动态链接在运行时完成。 预编译过程
1、处理所有的注释以空格代替。
2、将所有的#define删除并且展开所有的宏定义。
3、处理条件编译指令#if、#ifdef、#elif、#else、#endif。
4、处理#include展开包含的文件。
5、保留编译器需要使用的#pragma指令。
总结:预编译改替换替换展开#include文件保留#pragma指令。
编译
1、对预处理文件进行词法分析、语法和语义分析
词法分析关键字、标识符、立即数是否合法
语法分析表达式是否遵循语法规则
语义分析在语法基础上分析表达式是否合法。
2、分析结束后进行代码优化生成相应的汇编代码文件。
总结编译对预处理文件进行分析生成汇编代码。
汇编
汇编器将汇编代码转化为机器可执行的指令每个汇编语句几乎都对应一条机器指令。
总结汇编是把代码转化为机器能听懂的文件。
连接:
连接器是把代码中各个汇编生成的o文件连接起来。
分为静态链接 动态链接