C++宏命令详解

 
#d e f i n e N A M E r e s t o f l i n e
在编译时期,NAME被作为可替代的名字来进行运算,它在编译时期被替换成为rest of line.
并且宏能够定义成带参数的形式,比如:
#d e f i n e M A C (x ,y ) a r g u m e n t 1 : x a r g u m e n t 2 : y
在使用MAC的地方要按照定义进行宏展开,注意的地方是宏定义的名称不能进行重载,并且宏定义不能进行递归调用,如下:
#d e f i n e P R I N T (a ,b ) c o u t <<(a )<<(b )
#d e f i n e P R I N T (a ,b ,c ) c o u t <<(a )<<(b )<<(c ) /* trouble?: redefines, does not overload */
#d e f i n e F A C (n ) (n >1 )?n *F A C (n 1
):1 /* trouble: recursive macro */
在宏定义时最好使用/**/的注释格式,因为在展开的过程当中//会把//后面的定义给注释掉.
 
使用宏,用户可以定义自己编程习惯的特殊语言(BOOST当中很多都使用了该技术).
 
我们可以在宏定义当中使用##操作符来将拼接定义体当中的字符.
 
例如:
#d e f i n e N A M E 2 (a ,b ) a ##b
i n t N A M E 2 (h a c k ,c a h )();
我们就相当于定义了一个下面的函数:
i n t h a c k c a h ();
 
在定义完毕后,注意将这个宏函数用#undef释放掉,不然会污染名字空间,例如:
 
#undef NAME2
 
条件编译:
#ifdef arg
#endif
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值