Macro definition with parameters lambda

We know that some of the macro parameter is an expression, DEBUG enabled in use, you can export some log, when RELEASE can save performance.

The following macros are defined based on a lambda expression can handle some complex logic.

 

#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;
}

  

Guess you like

Origin www.cnblogs.com/westfly/p/11753908.html
Recommended