假设我有一个第三方库,它提供了类似函数的ThirdPartyMacro
宏:
ThirdPartyException
我想通过编写一个与MyMacro
完全相同的宏ThirdPartyMacro
来解决这个问题,但只要MyException
抛出ThirdPartyMacro
就抛出ThirdPartyException
。< / p>
有可能吗?如果是这样,怎么样?
不是因为(1)MyMacro
不能成为函数,因为它的参数不能作为函数参数传递。
答案 0 :(得分:6)
lambda会有所帮助:
#define MyMacro(...) \
[&]{ try { return ThirdPartyMacro(__VA_ARGS__); } \
catch( const ThirdPartyException& e ) \
{ throw MyException( e.what() ); } }()