【发布时间】:2016-03-03 00:12:20
【问题描述】:
我是 C 编程新手,我很难理解以下代码的作用?宏中的 '##' 是什么意思,我也不太明白我们在宏定义中是如何定义的,例如 f1,但没有参数。
我的问题不同,因为我也有多个定义
#include <stdio.h>
int a=1, b=2;
#define M(a,b) a ## b(a)
#define a t(f1,t(f1,f2(b)))
#define b(x) t(f2,t(f2,f1(a)))
#define ab(x) a+b(b)
typedef int (*i2i)(int);
int f1(int x) { return (++x); }
int f2(int x) { return (--x); }
int t(i2i f,int x) {return(f(f(x)));}
int main()
{
printf("%d\n%d", M(a,b), ab(5));
return (0);
}
【问题讨论】:
-
这段代码显然不应该被理解。除了娱乐还有什么用呢?
-
@LeeDanielCrocker 比赛 :)