我看过下面的代码:
#define QL_REQUIRE(condition,message) \
if (!(condition)) { \
std::ostringstream _ql_msg_stream; \
_ql_msg_stream << message; \
throw QuantLib::Error(__FILE__,__LINE__, \
BOOST_CURRENT_FUNCTION,_ql_msg_stream.str()); \
} else
这就是我们假设的使用方式。
void testingMacros1 (){
double x =0.0;
QL_REQUIRE (x!=0 ," Zero number !");
}
我假设else
到底有一些特殊的用法。
问题>有什么用else
附加在这个宏定义的末尾?
谢谢
宏检查条件。需要满足的条件是true
,否则会抛出异常。如果这是真的,你会像平常一样戴上大括号if
陈述。
你会像这样使用它:
QL_REQUIRE (x != 0, "x must not be 0")
{
y = 100 / x; //dividing by 0 is bad
}
宏替换条件,如果失败,它将打印给定的消息。如果没有失败,您的大括号或单行代码将构成 else 语句。从整个事情来看,逻辑有点颠倒。使用时,就像一个if
,但是当将其插入时,if
和else
有点角色互换。
有点像这样说:
assert (x != 0 && "x must not be 0");
y = 100 / x; //dividing by 0 is bad
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)