diff --git a/src/misc.h b/src/misc.h index fe7cf7d..f4fa346 100644 --- a/src/misc.h +++ b/src/misc.h @@ -19,11 +19,11 @@ #define PATH_SLASH "//" #endif // _WIN32 -#define concat(a,b) a ## b -#define do_concat(a,b) concat(a,b) +#define CONCAT(a,b) a ## b +#define DO_CONCAT(a,b) CONCAT(a,b) template class __defer_struct final {private: T fn; bool __cancelled = false; public: __defer_struct(T func) : fn(std::move(func)) {} ~__defer_struct() {if(!__cancelled) fn();} void cancel() {__cancelled = true;} }; -//#define defer(x) std::unique_ptr do_concat(__defer_deleter_,__LINE__) (nullptr, [&](...){x}); -#define defer(x) __defer_struct do_concat(__defer_deleter,__COUNTER__) ([&](...){x;}); +//#define defer(x) std::unique_ptr DO_CONCAT(__defer_deleter_,__LINE__) (nullptr, [&](...){x}); +#define defer(x) __defer_struct DO_CONCAT(__defer_deleter,__COUNTER__) ([&](...){x;}); typedef std::string::size_type string_size; typedef std::vector string_array;