ASSERT什么时候用?怎么用?
来源:互联网 发布:已过期未注册备案域名 编辑:程序博客网 时间:2024/04/29 20:45
ASSERT什么时候用?怎么用?
ASSERT()是一个调试程序时经常使用的宏,在程序运行时它计算括号内的表达式,如果表达式为FALSE (0), 程序将报告错误,并终止执行。如果表达式不为0,则继续执行后面的语句。这个宏通常原来判断程序中是否出现了明显非法的数据,如果出现了终止程序以免导致严重后果,同时也便于查找错误。
ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
鉴于ASSERT以上红色标注的特点:
(1)它能够报告错误,终止执行。利用此特点可帮助调试,出错时立即得到反馈。
(2)release版本中被忽略。因为此特点,我们就必须注意,程序中应当有相应的处理错误的代码,不能依靠ASSERT。
good example :
ASSERT(NULL != pbData); //pbData是参数
if (NULL == pbData)
{
hr = E_INVALIDARG;
goto Error;
}
bad example :
......
ASSERT( n != 0);
k = 10/ n; //release版本中如果n=0,在这一行程序便会崩溃。
......
还有一种用法,就是在不正常的状态下加入ASSERT(0),强行停止。
比如,上面的例子也可以改成如下形式
if (NULL == pbData)
{
ASSERT(0);
hr = E_INVALIDARG;
goto Error;
}
PS:小写assert()的功能类似,它是ANSI C标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。
ASSERT只有在Debug版本中才有效,如果编译为Release版本则被忽略。
鉴于ASSERT以上红色标注的特点:
(1)它能够报告错误,终止执行。利用此特点可帮助调试,出错时立即得到反馈。
(2)release版本中被忽略。因为此特点,我们就必须注意,程序中应当有相应的处理错误的代码,不能依靠ASSERT。
good example :
ASSERT(NULL != pbData); //pbData是参数
if (NULL == pbData)
{
hr = E_INVALIDARG;
goto Error;
}
bad example :
......
ASSERT( n != 0);
k = 10/ n; //release版本中如果n=0,在这一行程序便会崩溃。
......
还有一种用法,就是在不正常的状态下加入ASSERT(0),强行停止。
比如,上面的例子也可以改成如下形式
if (NULL == pbData)
{
ASSERT(0);
hr = E_INVALIDARG;
goto Error;
}
PS:小写assert()的功能类似,它是ANSI C标准中规定的函数,它与ASSERT的一个重要区别是可以用在Release版本中。
- ASSERT什么时候用?怎么用?
- 什么时候用assert。
- 什么时候用assert
- 什么时候用assert。
- 什么时候用assert
- 什么时候用assert.
- 什么时候用assert
- 7.什么时候用assert。
- 什么时候用assert?
- 什么时候用assert
- 在什么时候用assert?
- java面试笔试题:什么时候用assert?
- 关于什么时候用assert(断言)的思考
- ThreadLocal是什么、什么时候用、怎么用
- 什么时候使用assert
- SQL语句什么时候用having?以及怎么…
- Java assert在什么时候使用
- 什么时候用抽象类,什么时候用接口
- 中年人创业的三大忌
- CentOS中Iptables关于ping的配置问题
- 哈弗曼编码 编码效率,信源熵,方差…… 信息论作业
- linux如何修改主机名
- linux学习之路一之复习篇二
- ASSERT什么时候用?怎么用?
- (3)寄存器(内存)
- Project Euler 31
- 探讨]优秀程序员和一般程序员差别在哪?
- 总结的android textview属性
- 第二届吴文俊人工智能科学技术奖揭晓
- 【Web制图】如何使用ArcGIS Online制作游记(二)
- Oracle EBS DBA常用SQL - 安装/补丁
- linux socket无延迟发送数据