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。

请参见

概念

断言