LAMDBA 宏

写程序最麻烦的一件事, 就是给变量命名. 有的时候不想命名, 就会使用匿名函数. 但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;
}

如果觉得有帮助, 可以扫描右边的微信打赏码支持一下.

Leave a Reply

Your email address will not be published. Required fields are marked *