ASSERT_VALID(pDoc)分析
大家好,又见面了,我是你们的朋友全栈君。
这个宏都是MFC的调试宏.
ASSERT_VALID宏用来在运行时检查一个对象的内部合法性,比如说现在有一个学生对象,我们知道每个学生的年龄一定大于零,若年龄小于零,则该学生对象肯定有问题。
事实上,ASSERT_VALID宏就是转化为对象的成员函数AssertValid()的调用,只是这种方法更安全。它的参数是一个对象指针,通过这个指针来调用它的AssertValid()成员函数。
与此相配套,每当我们创建从Cobject类继承而来的一个新的类时,我们可以重载该成员函数,以执行特定的合法性检查
ASSERT_VALID强制调用参数对象(必须是CObject或CObject*)的AssertValid函数,该函数实现对象的内部一致性检查,当你创建一个可重用类时,应该重载这个函数(VC中缺省已经重载了该函数),你可以在该函数中进行必要的检查工作. ASSERT宏用于确保参数内的表达式正确,如果表达式为false,则会显示一个消息对话框,其中有源文件的名字和当前行号,用户可以选择中断程序或进行调试.这个宏通常用于校验参数和返回值. 以上两个宏均只在Debug版本中有效,与ASSERT相对应的是VERIFY.VERIFY宏在Debug版本中与ASSERT相同,在Release版本中仅执行参数表达式,不进行校验.
ASSERT 和 ASSERT_VALID 都是用于Debug的,当括号中的表达式为FALSE时,会弹出对话框通知, 你可以自己加上一句ASSERT(FALSE),看看执行时有什么东东。
ASSERT_VALID用于对C++对象或指针进行有效性判断,如果出错,结果和ASSERT一样。
注意:二者都只能在MFC工程里用。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/155640.html原文链接:https://javaforall.cn
相关文章
- 递归算法时间复杂度分析[通俗易懂]
- vue源码分析-挂载流程和模板编译
- 驱动开发:内核无痕隐藏自身分析
- 【Linux 内核】实时调度类 ④ ( 实时运行队列 rt_rq 源码分析 | 实时运行队列 rt_rq 结构体字段分析 | active、rt_nr_running、curr、next 字段 )
- Linux的分支:分析与比较(linux的分支)
- MySQL的Key Partitioning技术使用分析(mysql的key分区)
- 故障诊断SQL Server三级故障诊断技术分析(sqlserver三级)
- 比较分析DB2与Oracle的优劣势(db2和oracle优点)
- 对比分析Oracle数据库的两列数据(oracle两列数据对比)
- 研究Redis键值内存的实用分析技巧(redis键值内存分析)
- smartysection简介与用法分析