yur*_*hek 3 c++ macros wrapper c++11
假设我有一个第三方库,提供类似函数的ThirdPartyMacro宏,它是:
ThirdPartyException我想通过写一个宏来包装这件事MyMacro,这将完全一样ThirdPartyMacro,但扔MyException时ThirdPartyMacro将抛出ThirdPartyException.
可能吗?如果是这样,怎么样?
不是因为(1)MyMacro不能是一个函数,因为它的参数不是可以作为函数参数传递的东西.
一个lambda将有助于:
#define MyMacro(...) \
[&]{ try { return ThirdPartyMacro(__VA_ARGS__); } \
catch( const ThirdPartyException& e ) \
{ throw MyException( e.what() ); } }()
Run Code Online (Sandbox Code Playgroud)