MFC 断言
本主题适用于:
版本 |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
学习版 |
仅限本机 |
||||
专业版、高级专业版和旗舰版 |
仅限本机 |
MFC 为断言检查定义 ASSERT 宏。 它还定义 MFC ASSERT_VALID 和 CObject::AssertValid 以供检查 CObject 派生的对象的内部状态。
如果参数(一个表达式)计算为零或 false,则 MFC ASSERT 宏将暂停程序执行并警告用户。 如果表达式计算为非零,则继续执行。
当断言失败时,将有一个消息对话框显示断言的源文件的名称和行号。 如果在该对话框中选择“重试”,则对 AfxDebugBreak 的调用将导致执行中断到调试器。 在此处,可以检查调用堆栈和其他调试器功能以确定断言失败的原因。 如果已启用实时调试,且断言失败发生时调试器未运行,则该对话框可以启动调试器。
下面的示例演示如何使用 ASSERT 检查函数的返回值:
int x = SomeFunc(y);
ASSERT(x >= 0); // Assertion fails if x is negative
可以将 ASSERT 用于 IsKindOf 函数以提供函数参数的类型检查:
ASSERT( pObject1->IsKindOf( RUNTIME_CLASS( CPerson ) ) );
ASSERT 宏仅在程序的调试版本中捕捉程序错误。 该宏在“Release”版本中不生成任何代码。 如果需要在发布版本中计算表达式,请使用 VERIFY 宏代替 ASSERT。