我是C编程新手,我很难理解下面的代码是做什么的?宏中的“##”是什么意思,我也不太明白我们在例如f1的宏定义中如何,但没有参数。斜杠在C语言的宏定义中意味着什么?
我的问题是不同的,因为我也有数倍定义
#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竞赛:) – user2085124