lichao
2021-05-18 cf05ea3d9f43e4e84d621e1f9d54cbef552b6e2b
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