宏分为两类,对象宏(object-like macro)和函数宏(function-like macro)。
对象宏,相对简单,但却也不是那么简单的查找替换。对象宏一般用来定义一些常数,举个例子:
//A simple object-like macro
#define M_PI 3.14159265358979323846264338327950288
函数宏,类似函数,可以接受参数的宏。具体来说,在定义的时候,如果我们在宏名字后面跟上一对括号的话,这个宏就变成了函数宏。从最简单的例子开始,比如下面这个函数宏
//A simple function-like macro
#define SELF(x) x
NSString *name = @"Macro Rookie";
NSLog(@"Hello %@",SELF(name));
参考: