预处理的功能
1.在c语言中#include <stdio.h> 就是一种预处理命令
类似还有#include<srring.h>这种都属于预处理命令
2.这些预处理命令都是带有#开头的
1.c提供的预处理功能主要有以下3种
- 宏定义
- 文件包含
- 条件编译
2.编译器
1.通过gcc编译器可以将.c文件编译成可执行文件
2.注意:gcc编译器默认直接一步到位,但底层其实分 4 个步骤
3.实际的编译过程
预处理:
将程序中的预处理命令,执行完,将代码处理成 纯的c语言代码
编译:
将预处理完的文件,进行语法,词法分析,检查问题
生成 一份 汇编代码
汇编:
将前面的汇编代码,最终翻译成机器代码
链接:
将用到的第三方代码 链接(拼接)成为 最终可执行程序
4.编译过程的步骤代码
预处理:
gcc -e hello.c -o hello.i
编译:
gcc -s hello.i -o hello.s
汇编:
gcc -c hello.s -o hello.o
链接:
gcc hello.o -o hello
示例:
以输入hello world到终端的代码演示四个步骤
(1)预处理阶段

(2)编译阶段

(3)汇编阶段

(4)链接阶段

1. 宏定义
用宏来替代文本信息
写法:
- define 标识符 字符串
- define 宏名 宏值
注意:
- 宏本质还是一个标识符,宏名通常用字符常量表示(最好大写)
- 运行的本质是将文本信息原样替代
- 用宏定义可以提高代码的可读性,方便后期调整
2.带参宏
- 带参宏 ,可以给一些参数,形式特别像函数调用
- 与函数区别在于没有类型
- 函数在程序运行后才可以用,宏在预处理阶段就处理完了
- 带参宏参与运算的时候加上括号,否则容易被改变值
所有宏定义都是以换行作为结束符,都是将文本信息原样替代
代码示例:


带参宏还可以定义一串代码
要用加上\代表在同一行,\后面不得跟有其他符号,结果输出一致,将宏的部分替代成一串代码


总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论