使⽤#define定义函数
#define是⼀个预处理器的宏定义语句。
⽐如定义⼀个常量
#define X 100
这样呢,在代码段中出现的任何X的地⽅都将替换成100
或者定义⼀个表达式
#define MAX(A, B) A > B ? A : B
使⽤:
MAX(2,3);//将返回3
MAX(2,3)其实被替换成了2 > 3 ? 2 : 3
还可以定义⼀个函数
#define FUN(A,B,C) void A##B(){std::cout<<#C<<std::endl;}
使⽤:
define的基本用法
FUN(fun,123,test 123);
fun123();
在使⽤宏定义函数的时候呢,需要先调⽤宏来构造出函数,然后才能使⽤正确的函数名来输出。
##的意思是将A和B连接起来,如果不使⽤##连接的话,那么函数名就会出现fun 123中间有个空格,这不是有效的c++函数,就会报错。
#C的意思呢,就是把C转换成有效的c++字符串字⾯量,这⾥如果不是⽤#,那么,在构造函数的时候就会导致编译器不知道C是什么类型,导致未定义。
有时候这种宏定义会⾮常的长,可以把宏定义写成好⼏⾏来显⽰
#define FUN(A,B,C) voi\
d A##B(){std::cout<<#C\
<<std::endl;}
只需要在每⼀个换⾏的地⽅插⼊⼀个‘\'就可以了
当然了,#define常⽤在C语⾔⾥,在C++⾥呢,也有⼀套解决⽅案,⽐如定义⼀个常量可以使⽤ const ,或者using,定义⼀个函数呢,可以使⽤模板。
#define呢就是⼀种替换,⽽且是⼀种⽆条件的替换,只有当被替换时才能检查出语句是否有效,这种预处理器指令也是在编译后就消失了,不存在于源⽂件中。
有⼈说#define已经过时了,但是我相信,每⼀个语句的出现,都必将是有意义的。你觉得呢?
感谢查阅,如若能帮到您,是我莫⼤的荣幸!

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。