加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 在宏中使用`else`

发布时间:2020-12-16 03:34:00 所属栏目:百科 来源:网络整理
导读:我看过以下代码: #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
我看过以下代码:
#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的用法是什么?

谢谢

解决方法

宏检查条件.它需要条件为真,否则它将抛出异常.如果这是真的,你会像普通的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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读