字符串中插入宏
#define XX 89
printf("1234567XX");
上面的代码实际的输出仍未 1234567XX 而宏并没有替换到其中。
首先先看如何在字符串中插入宏的实现。
#define XX(y) "ABCD "#y " EFG"
printf("%s\n", XX(insert));
这样的代码就会输出 “ABCD insert EFG”
’#’
’#’ 在define中被称为字符串化操作(Stringfication)。就是说将未来替换的转换成字符串(就是两边各加一个双引号)。
’##’
’##’ 两个#就叫做连词符(concatenator)。就是直接吧替换的东西个##的东西进行连接。有点说不明白,看代码。
#define YY(x) p##x("hello word!");
int main()
{
//YY(rintf);
return 0;
}
上面的代码就会在屏幕上打印hello word。这就是由于p和rintf拼接为了printf
TODO继续深化宏编程的学习。详解’#’ 与 ‘##’