嵌入式技术
近日在某一技术群又水群时某一群友将这个称之为“常量”,事实上在C语言#define正确的叫法叫做“宏定义”属于预处理指令中的一种,在C语言中应用极其广泛。
预处理指令则是指在程序编译前的操作,例如#include#define等带“#”的指令,其本身并不是C语言语句。
宏定义的用法主要有两个:定义值和定义算式
定义值:将某一值宏定义为一些符号例如下述演示中将3.1415 定义为 Pi ,这样子我们就可以使用Pi来代替3.1415进行计算
注意上述所说的替代是真正字面意义上的替代,可以理解为就是把Pi的地方给替换成了3.1415,而开头我们说过预处理指令不是C语言所谓的语句,因此不需要加上分号进行结尾。
结合这两个特性,在使用#define宏定义的时候就要尤其注意分号的存在,因为#define是替代,分号也会被替代进去,因此如果携带分号的时候如下语句就会报错,原因就是这句话等效于在算式中插入了一个分号。
什么时候我们会使用到宏定义呢?
例如代码中存在大量的重复数字,且这些数字都一起改变时,比方说一次采样的长度,我们就可以利用宏定义#define Lenth 1000
这样子我们就可以只改变替代Lenth的值来改变全部代码中Lenth的大小,节省了很多修改代码的时间。
许多同学经常因为使用中文字符而苦恼报错嘛~经常注释时进行中英文切换而头疼嘛。没错,使用#define,走报错的路,让报错无路可走!!好好好,中文编译器是吧~~ 请勿模仿
第二个用法就是定义算式如下图所示利用三目运算符 将最小值宏定义为min(a,b),宏定义中出现的变量a ,b会代入后续式子中进行运算,这种类型很像是函数但实际上并非函数。
利用这种方法可以快速的定义一些算式,例如下面的三个数最小值两个联立的三目运算符即可比较出三个数的最小值,可以较为方便的编写部分代码,节省我们所需要的空间。
全部0条评论
快来发表一下你的评论吧 !