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