assert和verify命令的详细用法.docx

assert和verify命令的详细用法.docx

ID:50984713

大小:30.46 KB

页数:2页

时间:2020-03-08

assert和verify命令的详细用法.docx_第1页
assert和verify命令的详细用法.docx_第2页
资源描述:

《assert和verify命令的详细用法.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、assert,assert_valid,verify,trace用法(转载)2010-08-059:10对于开始学vc的人,对于assert,assert_valid,verify,trace的宏感到很奇怪,总是觉得很难掌握似的,其实这些主要是没有理清楚他们各自宏之间深层次的意义。这些都是我平时的学习笔记,可能有些是网上的资源,如果有重复请大家不要见怪~ASSERT()ASSERT()被测试它的参数,若参数为0,则中断执行并打印一段说明消息。在Release版本的程序中它不起任何作用。ASSERT()使用的时候必须保证参数表达式中不能有函数调用(译者注:ASSERT()宏在Rel

2、ease版本中不对表达式求值),因此对于任何有函数调用的参数表达式,应该使用宏VERIFY(),以保证表达式中的函数调用在Release版本中会被正确求值。断言(assertion)用带断言信息(程序,模块,assertion行)的对话框执行.对话框有3个按钮:"Break","Repeat"("Debug"),and"Continue"("Ignore")."Break"结束程序,"Continue"忽略断言,最有用的是"Repeat"按钮.按下它在断言的地方打开源代码编辑器.在这里你可以测试所有的变量值并明白哪里出了问题。例如:ASSERT(pPointer);ASSERT(

3、n>0&&n<100);ASSERT(0);ASSERT在执行简单验证时很有用,但对于C++对象,特别是由CObject派生的对象,则有更好的方法ASSERT_VALID来实现类似操作。作为一般规则,我们应在开始使用每一个对象之前检查数据讹误,ASSERT_VALID宏使得对CObject的派生类实现该操作非常简单。例如:ASSERT_VALID(this);ASSERT_VALID(pView);VERIFY()VERIFY()和ASSERT()很相似,区别在于在Release版本中它仍然有效(译者注:原作者在这里没有讲清楚,VERIFY()不会打印说明,只是会对参数表达式求值

4、)。TRACE()TRACE()基本上就是函数printf()的一个复制品,唯一的区别是它把结果输出到调试窗口。在Release版本中,它也是无效的。一般是用TRACE0(),TRACE1(),TRACE2()…而不用TRACE()。·这三个宏在Release版本中都不会产生任何实质性的影响,它们是否起作用取决于是否定义了预定义了宏_DEBUG。这是对MicrosoftVisualC++而言,在其它的编译器中可能其它不同的宏。常用用法:为了控制传进的指针:voidSomeFun(SomeType*pPointer){ASSERT(pPointer);//someinstructi

5、ons.}你可以在"switch"和"if"操作中捕获奇怪的值例如:switch(nRGBColors){casenRed:{//someinstructions.}break;casenGreen:{//someinstructions.}break;casenBlue:{//someinstructions.}break;default:ASSERT(0);//weshouldhavenevercomehere!}if(nWaterTemp>=0&&nWaterTemp<50){//someinstructions.}elseif(nWaterTemp>=50&&nWater

6、Temp<=100){//someinstructions.}else{ASSERT(0);//weshouldhavenevercomehere!}对值的断言:ASSERT(nSomeValue>=MinValueandnSomeValue<=MaxValue);ASSERT(nOtherValue!=0);可爱的ASSERT错误ASSERT(m_MyWnd.Create());呕!这是一个可怕的错误!程序在调试版中正常工作,在发行版中不工作.记住:这是一个在发行版中将被移除的宏.以这种方法你的窗口将永远不会被创建.如果你用MFC,这样做:VERIFY(m_MyWnd.Crea

7、te());它在调试版中像ASSERT一样并且在发行版中执行m_MyWnd.Create()。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。