在宏定义中,经常会遇到使用##符号,这个符号到底什么作用呢?今天这里简单的说明下:
1. ##
名称:记号粘帖操作符(token paste operator)
作用:##先变成空格,将字符分隔开来,然后再将字符连接起来。
在宏定义中,预处理器一般把空格解释为分段标志,对每一段进行比较,与前面相同的,就进行替换。但是如果用空格隔开,就不太好看,所以可以用##来代替空格。
比如 #define A(a) s a
#define A(a) s##a
1)先将##替换为空格,然后再来根据空格来把待替换的字符分段,如果某个段与前面相同,则进行替换。
2)另外,待替换的字符段,也可以用+, - * /, , ()等进行分段。
逗号 ,