带参数的宏替换因各种需求叠加,替换规则很怪异:
1、首先将实参替换形参,并展开宏
2、如果1步展开后,有#或者##,参数会被加上双引号,导致停止替换。
3、如果1步展开后,没有#或者##,且参数也是宏,那么继续替换,知道参数没有宏为止。
4、执行完1-3后,第一轮替换结束,再次扫描宏,如果外层还有宏,继续替换。
5、简单说:先用实参代替形参,然后继续替换实参内的宏,发现#或##后停止。
本文共 246 字,大约阅读时间需要 1 分钟。
带参数的宏替换因各种需求叠加,替换规则很怪异:
1、首先将实参替换形参,并展开宏
2、如果1步展开后,有#或者##,参数会被加上双引号,导致停止替换。
3、如果1步展开后,没有#或者##,且参数也是宏,那么继续替换,知道参数没有宏为止。
4、执行完1-3后,第一轮替换结束,再次扫描宏,如果外层还有宏,继续替换。
5、简单说:先用实参代替形参,然后继续替换实参内的宏,发现#或##后停止。
转载于:https://www.cnblogs.com/litifeng/p/8424078.html