64,682
社区成员
发帖
与我相关
我的任务
分享
#define TC_JOIN_ARGS(a,b) a##b
#define TC_JOIN(a,b) TC_JOIN_ARGS(a,b)
#define TC_UNUSED_VAR __attribute__ ((unused))
#define finally_do(code) \
struct TC_JOIN(Finally,__LINE__) \
{ \
TC_JOIN(~Finally,__LINE__) () { try { code } catch (...) { } } \
} \
TC_UNUSED_VAR \
TC_JOIN(finally,__LINE__)
// Execute code with argument 'finally_arg' when leaving scope
#define finally_do_arg(argType, arg, code) \
struct TC_JOIN(Finally,__LINE__) \
{ \
TC_JOIN(Finally,__LINE__) (argType a) : finally_arg (a) { } \
TC_JOIN(~Finally,__LINE__) () { try { code } catch (...) { } } \
argType finally_arg; \
} \
TC_UNUSED_VAR \
TC_JOIN(finally,__LINE__) (arg)
struct Finally17 { ~Finally17 () { try { { CoreService::Stop(); } } catch (...) { } } } __attribute__ ((unused)) finally17;