带lambda参数的宏定义
我们知道有些宏的参数是表达式,在DEBUG启用的使用,可以输出一些日志,在RELEASE的时候,可以节省性能。
如下的宏定义是基于lambda表达式,可以处理一些复杂的逻辑。
#ifdef debug #define macro(labmda) \ do { \ labmda; \ } while (0) #define macro_call(labmda) macro(labmda()) #else #define macro(labmda) #define macro_call(labmda) #endif #include <stdio.h> int main(int argc, char *argv[]) { int x = 100; macro([&]() { printf("hello %d\n", x); }()); macro([](int x) { printf("hello %d\n", x); }(x)); return 0; }