程序源码要运行出结果,需要机器可以识别程序指令,主要进行以下四个步骤:
- 预处理, 展开头文件/宏替换/去掉注释/条件编译 (test.i main .i)
- 编译, 检查语法,生成汇编 ( test.s main .s)
- 汇编, 汇编代码转换机器码 (test.o main.o)
- 链接 链接到一起生成可执行程序 a.out
预处理包括展开头文件/宏替换/去掉注释/条件编译:
展开头文件、
处理宏 - 字符替换、
处理所有的条件编译指令,比如“#if”、
处理“#include”预编译指令、
删除所有的注释、
添加行号和文件名标识等。
- 另外这里对
#include“animal.h”
和#include <animal.h>
进行说明一下区别
.<>和“”表示编译器搜索头文件的顺序不同: <>
表示从系统目录下开始搜索,然后再搜索PATH环境变量所列出的目录,不搜索当前目录
""
表示先从当前目录搜索
,然后是系统目录和PATH环境变量所列出的目录下搜索
所以如果我们知道头文件在系统目录或者环境变量目录下时,可以用<>来加快搜索速度
编译:包含词法分析,语法分析,语义分析,和进行优化操作,生成汇编代码。
词法分析</