在宏中使用“else”

2023-12-25

我看过下面的代码:

#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,但是当将其插入时,ifelse有点角色互换。

有点像这样说:

assert (x != 0 && "x must not be 0");
y = 100 / x; //dividing by 0 is bad
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在宏中使用“else” 的相关文章

随机推荐