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
|
|