#define是怎样
程序代码:#include <stdio.h>
#define f(a, b) a##b
#define h(a) g(a)
#define g(a) #a
void main()
{
printf("%s\n", h(f(1, 2)));//输出:12
printf("%s\n", g(f(1, 2)));//输出:f(1, 2)
}
就是这个结果啊,看不明白啊。。。
程序代码:#include <stdio.h>
#define f(a, b) a##b//两个##表示将前后两个参数连接成字符串
#define h(a) g(a)
#define g(a) #a//将参数转换为字符串
void main()
{
printf("%s\n", h(f(1, 2)));//输出:12
//由于在h(a)这个宏里面没有#/##,所以它宏参数f(1,2)展开 连接成“12"字符串,然后给g(12),得到字符串..."12"
printf("%s\n", g(f(1, 2)));//输出:f(1, 2)
//由于在g(a)这个宏里面有#/##所以宏参数f(1,2)就不展开的,得到#f(1,2),也就得到"f(1,2)"
}