MFC 断言

更新:2007 年 11 月

本主题适用于:

版本

Visual Basic

C#

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。

请参见

概念

断言