#define Connect(x,y) x##y
#define ToChar(x) #@x
#define ToString(x) #x
-
##
连接操作符:表示 x 连接 y ,生成 xy
NSString *str = Connect(@"a", @"b"); 结果是 str = @"ab"
-
#@
字符化操作符:表示将单个字符参数名转换成字符,以一个单引号括起来,其实就是给 x 加上单引号,结果返回是一个 const char。注意:只能用于有传入参数的宏定义中,且必须置于宏定义体中的参数名前。
char a = ToChar(a); 结果是 a = 'a'
3.#
字符串化操作符:表示将宏定义中的闯入参数名转换成用一对双引号括起来参数名字符串。其职能用于有传入参数的宏定义中,且必须之一宏定义体中的参数名前,结果就是在 x 加双引号
char *str = ToString(123); 结果是 str = "123"
4.\
行继续操作符:表示当定义的宏不能用一行表达完整时,可以用\
表示下一行继续宏的定义。注意:最后一行不要加行继续符。编译器会在编译之前会自动将\
与换行回车去掉;写多行是,反斜杠后不能有空格,否则编译器会报错。
网友评论