一个 # 号
- 表示加双引号
#define kToString(x) #x
kToString(123) 等价于 "123"
显然,这个一个C字符串。 要想变成OC的字符串,还需要改进一下:
#define kToString(x) @""#x
or
#define kToString(x) @#x
两个 ## 号
- 表示连接
#define kConnect(x,y) x##y
kConnect(123,456) 等价于 123456
x与 ## 以及 y之间可以有空格,会自动过滤
等同于 #define kConnect(x,y) x ## y
还有 #@
- 表示加单引号
#define kToChar(x) #@x
当这样定义的时候
系统抛出了一个红色警告⚠️
'#' is not followed by a macro parameter
Use of undeclared identifier 'x'