#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