预处理指令 分3种
>宏定义
>条件编译
>文件包含
预处理指令是在代码翻译成0跟1之前执行的
> 所有的预处理指令都是以#号开头的
源文件-->预处理-->汇编-->二进制-->链接(可执行文件)-->运行
#define 宏名 值
定义一个没有参数的宏
宏定义干什么 在代码翻译成0跟1之前,把所有的宏名替换为值(宏定义只做一个单纯的替换操作)
注意: 宏名和值之间要用空格隔开
宏定义后面不需要写分号
如果把宏名写在双引号中在代码翻译成0跟1之前不会进行替换
一般宏名都大写,为了和局部变量区分开来
宏名除了用大写 还可以用k开头
宏定义的作用域:
从定义的那一行开始一直到文件结束
宏定义的位置随便写
可以使用#undef来提前结束宏定义的作用域
02-带参数的宏定义:
注意:
宏名后面的()中不需要写参数类型
()和后面要替换的格式之间要用空格隔开
带参数的宏定义和函数的区别:
宏定义不会进行运算,你传什么他就会给你替换成成什么
带参数的宏定义比函数的效率高
因为带参数的宏定义是在运行之前就替换好了,运行的时候只需要做一个运算;
而函数是在运行的时候才去找到函数并运算
应用场景:做一些简单的运算用宏定义, 如果做一些复杂的运算就用函数
注意点
写带参数的宏定义一般会给每一个参数都加上括号
写带参数的宏定义不仅要给每一个参数加上括号还要给整体也加上括号