宏元编程—逻辑控制——实现分支

分支宏定义分支宏定义成#define if(condition,t,f) if-bodycondition为1,if-body宏展开成tcondition为0,if-body宏展开成f定义两个辅助宏#define if_1(1,t,f) t#define if_0(1,t,f) f实现分支的思路就是想法根据conditon来把if(condition,t,f
摘要由CSDN通过智能技术生成

分支宏定义

#define TL_IF(condition,t,f) if-body

condition为1,if-body宏展开成t

condition为0,if-body宏展开成f

定义两个辅助宏

#define TL_IF_1(1,t,f) t

#define TL_IF_0(1,t,f) f

实现分支的思路就是想法根据conditon来把if(condition,t,f)映射成TL_IF_1或者TL_IF_0

生成新的宏名称,并且继续展开可以通过##来实现,可以参考宏元编程

#define TL_CAT(p1,p2) TL_CAT1(p1,p2)
#define TL_CAT1(p1,p2) p1##p2

#define TL_IF(c,t,f) TL_CAT(TL_IF_,c)(t,f)
#define TL_IF_1(t,f) t
#define TL_IF_0(t,f) f

再优化下,我们希望condition在[1,256]区间里,if表达式的值都为t

可以通过定义个TL_BOOL函数把[1,256]区间的值都映射为1

#define TL_BOOL(n) TL_CAT(TL_BOOL_,n)
//
#define TL_BOOL_0 0
//
#define TL_BOOL_1 1
#define TL_BOOL_2 1
#define TL_BOOL_3 1
#define TL_BOOL_4 1
#defi
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值