写程序最麻烦的一件事, 就是给变量命名. 有的时候不想命名, 就会使用匿名函数. 但C语言并没有为我们提供匿名函数的功能. 而我们可以通过宏定义配合上({block;})
形式构造出匿名函数的宏表达式. 下面是一个例子, 该例子在GCC上能过顺利编译通过, 但在G++上无法通过编译.
#include <stdio.h>
#define LAMDBA(return_type, args_type, block) \
({ \
return_type _ args_type block; \
_; \
})
int main(int argc, char *argv[]) {
int b = LAMDBA(int, (int a, int b), {
int c = a * a;
int d = b * 2;
return c + d;
})(12, 13);
printf("%d\n", b);
return 0;
}
如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.