#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)" }