C++笔记之macro

本文主要探讨了C++中宏的使用,特别是间接调用的概念。通过实例解析了#define T(x) #x、#define C(x, y) x##y等宏的替换规则,并解释了为何有时需要间接调用来避免参数的预处理。尽管宏使用复杂,但理解其原理对于阅读和编写代码至关重要。" 136335122,17243493,深入理解分布式事务:原理、算法与实战,"['架构设计', '分布式', '数据库', '算法', '事务管理']
摘要由CSDN通过智能技术生成

  macro(宏)感觉很强大,但是又晦涩难懂。

  平时只是用到那些基础的,比如#define XX 之类的,但是如果要阅读其他代码的话就感觉不够用了。

  记得看Imperfect C++中文版的时候,遇到了一个问题,代码大概如下

#define CON(x, y) x##y
#define CONNECT(x, y) CON(x, y)
  然后作者说至于为什么这样设计的,请读者自己思考。

  当时一直就搞不懂,为什么会需要间接调用而不是直接就调用,这两个有什么区别吗?问题是什么,我都忘记了。

  后来当再次想起这个问题的时候,我就问了一下某个群的高手,然后给了我一个链接Click here,我研读了一下,然后整理宏的相关部分。

  1.形如#define T(x) #x:

  这个宏替换后变成“x"

  2. 形如#define C(x, y) x##y

  这个替换后成为xy,这里不是“xy"

  3.形如上面的间接调用,这里是一个难点:

  其实当搞明白之后也很简单,就是为了展现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值