1、被隐藏的编译过程:
2、编译过程:
(1)预编译:
- · 处理所有的注释,以空格代替;
- · 将所有的#define删除,并展开所有的宏定义
- · 处理条件编译指令:#if,#ifdef,#elif,#else,#endif
- · 处理#include,展开包含的头文件
- · 保留编译器需要使用的#pragma指令
(2)编译:
- · 对预处理后的文件进行一系列词法分析、语法分析和语义分析
- · 词法分析:主要分析关键字、标识符、立即数等是否合法
- · 语法分析:主要分析表达式是否遵循语法规则
- · 语义分析:在语法分析的基础上进一步分析表达式是否合法
- · 分析结束后,进行代码优化,生成相应的汇编代码文件
3、汇编:
- · 汇编器将汇编代码转变为机器指令
- · 每个汇编语句几乎对应一条机器指令
4、链接器
- · 连接器主要把各个模块之前相互引用的部分处理好,使得各个模块之间能够正确衔接,组成一个完成的应用程序。
静态连接:
动态链接:
C语言编译流程解析
本文详细介绍了C语言从源代码到可执行程序的整个编译过程,包括预编译、编译、汇编和链接四个阶段。预编译阶段会处理注释、宏定义、条件编译指令和包含文件;编译阶段进行词法分析、语法分析、语义分析并生成汇编代码;汇编阶段将汇编代码转换为机器指令;链接阶段负责解决模块间的相互引用。
】编译过程的简介&spm=1001.2101.3001.5002&articleId=30259319&d=1&t=3&u=72bb9dcc61f447d9b5efca13041add94)
1312

被折叠的 条评论
为什么被折叠?



