Assertions

断言失败时,后面的宏都会暂停执行。

当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, ...);

你可能感兴趣的:(Assertions)