宏元编程定义
宏元编程目的是利用宏在展开时候的特性减少重复代码,提供更高层的编程抽象。
宏的定义
宏有两种形式,带参数和不带参数
#define identifier replacement-list
#define identifier(a1,a2,...an) replacement-list
说明:宏的实参必须是除了逗号和小括号之外的预处理标记,或者有一对小括号包围的一组预处理标记。
举例:
#define FUN(x) x // ok
#define Fun1(,) // failed
#define Fun2(() // failed
两个预编译期的特殊标记##和#
##含义是把两端的预处理标记和在一起生成一个新的预处理标记
#会把后面跟的预处理标记生成一个字符串
例如:
#define PARAM(n) p##n
#define TO_STRING(x) #x
可以这样应用
void func(PARAM(1), PARAM(2), PARAM(3)){
}
char* name = TO_STRING(hello);
展开后
vo