iOS 宏定义中的#

一个 # 号

  • 表示加双引号
#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'

参考

https://www.jianshu.com/p/3995c4b3b2c4

你可能感兴趣的:(iOS 宏定义中的#)