#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继续深化宏编程的学习。详解’#’ 与 ‘##’