lichao
2021-05-10 77a6c3512a44dfe6540dde71946e6484fe4f173f
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#ifndef MACRO_LMMKBZRX
#define MACRO_LMMKBZRX
 
#define EXPAND(x) x
#define CALL(M, ...) EXPAND(M(__VA_ARGS__))
 
// macro helper
#define JOIN_IMPL(a, b) a##b
#define JOIN(a, b) JOIN_IMPL(a, b)
 
// defer function or lambda.
#define DEFERF(func) ExitCall JOIN(defer_, __LINE__)(func)
// defer simple expression
#define DEFER1(expr) DEFERF([&]() { expr; })
#endif // end of include guard: MACRO_LMMKBZRX