作者:唯爱天使之诺言 | 来源:互联网 | 2023-08-08 21:39
优缺点
优点
-
开辟一片栈空间
-
记录返回地址
-
将形参压栈,
-
从函数返回还要释放堆栈。
函数的参数必须被声明为一种特定的类型,所以它只能在类型合适的表达式上使用,我们如果要比较两个浮点型的大小,就不得不再写一个专门针对浮点型的比较函数。反之,上面的那个宏定义可以用于整形、长整形、单浮点型、双浮点型以及其他任何可以用“>”操作符比较值大小的类型,也就是说,宏是与类型无关的。
缺点
-
编译时间长一般需要伴随着静态断言
-
没有语法检查不安全
-
重度使用时会带来明显的额外的空间占用。
宏函数在预编译时,同函数定义的代码来替换函数名,将函数代码段嵌入到当前程序,不会产生函数调用,所以会省去普通函数保留现场恢复现场的时间,但因为要将定义的函数体嵌入到当前程序,所以不可避免的会占用额外的存储空间。在频繁调用同一个宏的时候,该现象尤其明显。
怎么写?
-
#define开头
-
参数无需参数类型
-
FUNC_TEST为宏定义函数名称
-
TODO为函数具体实现内容
-
除了函数最后一行外其他都要加上 \
-
一般函数中可以使用静态断言进行检查
#define FUNC_TEST(param1,param2)\
{\
TODO\
}
函数中的参数的使用
基本上时可以直接使用的,就是你想把参数作为什么类型的变量就用对应的方式去使用即可。就是由于没有类型检查所以使用的时候要小心注意。