C语言进阶 五、程序环境和预处理
一、 程序的翻译环境和执行环境
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/73b18195ddbff11c41b54ec876158a00.png)
二、编译+链接
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/28ffb58b875f46c3f7a088ee51840c5e.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/4ce9e3b1d102b75107f3184db794cd1c.png)
gcc环境下编译,一步一步的可以看到具体的细节
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/60c63254c9b9fe21dea4e0a5ccf6713e.png)
1、预处理
头文件的包含(不建议多次包含)
宏定义替换
注释删除
预处理阶段都是文本操作
2、编译
把C语言转换汇编
语法分析
词法分析
符号汇总(全局)
语义分析
3、汇编
汇编指令变成二进制指令,同时把上一步形成的符号汇总形成符号表
编译完成后,生成二进制文件
4、链接
合并段表
符号表的合并和符号表的重定位
形成可执行文件
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/594237b98f173458a45bd0d965c5a987.png)
三、运行环境
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/6813617458e9b7807ef386be49fce17f.png)
四、预处理
1、预定义符号
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/49bd0ea7b8fd87e068aa289b9ffbbedb.png)