宏中“else”的用法
usage of `else` in macros
我看到了以下代码:
#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
相关文章:
- 我的简单if-else语句是如何无法访问的代码
- 线程,如果else语句,都是错误的上下文切换后,会发生什么
- 这个指针在c++中的用法
- 如何删除peer if else分支中的冗长句子
- 我似乎对if/else的基本语句有问题:/
- 使用if-else将数字转换为单词
- c++ std::enable_if .... else?
- 当C++中需要自动删除时,这是静态的正确用法吗?
- 如果 else 语句不断循环
- libstdc++ 文件系统中未初始化的用法?
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- C++ If/Else 语句被跳过
- 为什么我的最后一个 ELSE 条件无法正确执行
- 如果条件不相关,我应该更喜欢两个 if 语句而不是 if-else 语句吗?
- 复制和交换习惯用法与移动操作之间的交互
- 如何将 if else 语句重写为 switch 语句
- 类作用域的类型别名"using":[何时]方法中的用法可以先于类型别名?
- 命名参数习惯用法和(抽象)基类
- C-do{.}while(0);可以从代码中删除,不包括嵌套的if-else用法
- 宏中“else”的用法