断言失败时,后面的宏都会暂停执行。
当DO_CHECK = 1时执行
check(expression);
eg:check(Mesh != nullptr);
checkf(expression, ...);
当断言表达式为true并打印额外信息
eg:checkf(WasDestroyed, TEXT( "Failed to destroy Actor %s (%s)"), *Actor->GetClass()->GetName(), *Actor->GetActorLabel());
verify(expression);
当DO_CHECK = 1时和check一样;
verifyf(表达式,......);
checkCode(expression);
DO_CHECK被禁用时,在执行一次的do / while循环内执行
checkNoEntry()
用于标记永远不应执行的代码路径
switch (MyEnum)
{
case MyEnumValue:
break;
default:
checkNoEntry();
break;
}
checkNoReentry();
checkNoRecursion();
保证函数只被调用1次
unimplemented();
标记应该被覆盖或不在特定类上调用的函数
第二类断言宏仅在启用DO_GUARD_SLOW时执行
checkSlow(),checkfSlow()和verifySlow()
第三类断言宏不会停止执行,而是用于创建一个callstack报告以帮助跟踪问题。使用DO_CHECK定义启用这些宏。
ensure(expression);
如果表达式失败,则生成一个指向该点的callstack。
ensureMsg(expression, message);
ensureMsgf(expression, message, ...);
网友评论