平常阅读代码中,会经常遇到宏中使用#或者##号,很多初学者看到使用#或者##的定义宏时会有点头大
其实区分两个东东非常简单:
- 宏中使用#号 会将宏中的参数变为字符串,例如:
#define toString(str) #str
上述例子使用#号定义,将参数str转换成字符串,如果时toString(123456) 之后,123456数字会被转换成字符串“123456”
- ##号的作用时黏贴符号的作用,将两个变量黏贴在一起,但是并不是转成字符串
#define conVar(a,b) (a##b)
上述宏,是将两个变量a和b黏贴在一起,例如conVar(1,5) 之后会变成15,但是并不是字符串“15”,而是整数15