#define的一些高级用法
1.两个参数宏定义
#define SUM(x, y) (x + y) // 调用 int a = SUM(10, 5);
2.多个参数宏定义
#define Array(FIRST, ...) [NSArray arrayWithObjects:FIRST, ##__VA_ARGS__, nil] // 其中 ##__VA_ARGS__ 用于表示省略号所代表的所有内容
3.#符号和##符号
// # 算符可产生一个 C-语言 格式的字符串 #define string(x) #x //则 string(testing) == "testing"
//## 算符用来连接两段字符串。假设你有一组变量,x1 到 x100。如果你想打印其中某一个变量的值。你可以这样定义: #define printxvar(n) printf("%i\n", x ## n)
由此, printxvar(20); 在编译时将被识别为 printf(“%i\n”, x20);。这样只需要输入 printxvar(n);便可以打印出 xn 的值。
其实,##最常用的用途还是上面介绍的 ##__VA_ARGS__,它可用来抓取省略号所代表的所有内容。

浙公网安备 33010602011771号