带参数的宏替换

带参数的宏替换因各种需求叠加,替换规则很怪异:

1、首先将实参替换形参,并展开宏

2、如果1步展开后,有#或者##,参数会被加上双引号,导致停止替换。

3、如果1步展开后,没有#或者##,且参数也是宏,那么继续替换,知道参数没有宏为止。

4、执行完1-3后,第一轮替换结束,再次扫描宏,如果外层还有宏,继续替换。

5、简单说:先用实参代替形参,然后继续替换实参内的宏,发现#或##后停止。

原文地址:https://www.cnblogs.com/litifeng/p/8424078.html