#符号

用于转换成字符串,即相当于在#后面的内容两端加上双引号,如果原本就有双引号则会自动进行转义

举例:

1
2
3
4
#define MAKE(x) #x
NSLog(@"%@", @(MAKE(12))); // 打印结果:12
NSLog(@"%@", @(MAKE(www))); // 打印结果:www
NSLog(@"%@", @(MAKE("www"))); // 打印结果:"www"

##符号

用于连接tokens,但是只能连接数字

举例:

1
2
#define CONCAT_1(x,y) (x##y)
NSLog(@"%@", @(CONCAT_1(1,2))); // 打印结果:12

如果要连接C字符串,则需要用如下的宏定义:

1
2
#define CONCAT_2(x,y) (x y)
NSLog(@"%@", @(CONCAT_2("ww","ee"))); // 打印结果:wwee