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.形如上面的间接调用,这里是一个难点:
其实当搞明白之后也很简单,就是为了展现