#define
在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串
凡宏定义里有‘#’和‘##’的地方宏参数不再展开”;而h(f(1,2))展开内部的f(1,2),是因为:“要解决这个问题只需多加一层中间转换层
#include <stdio.h>
#define f(a,b) a##b
#define g(a) #a
#define h(a) g(a)
int main()
{
printf("%s\n", h(f(1,2)));
printf("%s\n", g(f(1,2)));
return 0;
}
本题的输出是12和f(1,2),