lichao
2021-05-21 7b84c595bb128d0ae72555b4e8f93df516499584
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