#
单井号(#)在宏定义中的作用就是 把传递过来的参数当成字符串进行替换
#define pl(param) NSLog(@"%s参数地址---%p",#param,param)
pl("xxx")
xxx参数地址---0x12345678
##
双井号(##)又称连接符,它的作用就是 将参数和前面或后面的子串连接起来,成为一个新的子串
#define GENERIC_MAX(type) -(type) type##_max:(type)x :(type)y {return x > y ? x : y;}
GENERIC_MAX(float)
-(float) float_max:(float)x :(float)y {return x > y?x:y;}