搜索
编程论坛
→
开发语言
→
C++论坛
→
『 VC++/MFC 』
→ 大家在写C++程序的时候用assert函数吗?
标题:
大家在写C++程序的时候用assert函数吗?
只看楼主
nwpu063417
等 级:
论坛游民
威 望:
8
帖 子:428
专家分:28
注 册:2007-5-11
结帖率:
60%
楼主
问题点数:0 回复次数:3
大家在写C++程序的时候用assert函数吗?
如果用,在什么时候用呢?
搜索更多相关主题的帖子:
assert
函数
2008-10-12 15:08
lylyxt
等 级:
新手上路
帖 子:11
专家分:0
注 册:2006-11-27
第
2
楼
得分:0
assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:
#include <assert.h>
void assert( int expression );
assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,
然后通过调用 abort 来终止程序运行。
使用assert的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。
在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下:
#include <stdio.h>
#define NDEBUG
#include <assert.h>
2008-10-16 14:59
debroa723
等 级:
贵宾
威 望:
23
帖 子:862
专家分:1954
注 册:2008-10-12
第
3
楼
得分:0
一般地,某个变量(状态值或是对象什么),如果我明确知道它应该在什么样个范围下属于正常,注意是在代码没有BUG的条件下的假设,就用到assert,那么如果它出了这个正常范围,就说明自己的代码有BUG,OK,断言了就知道该在什么地方找BUG了。因为BUG都是未知的,我们不知道它在什么地方,这个办法至少可以告诉我们它在哪个地方,或是一个小范围,总比上万行甚至更多的代码里翻要觉得的轻松的多。
assert是调试手段之一,release下该代码是不会被编译的,总之捉虫请趁早。
2008-10-16 18:31
nwpu063417
等 级:
论坛游民
威 望:
8
帖 子:428
专家分:28
注 册:2007-5-11
第
4
楼
得分:0
谢谢楼上两位了
2008-10-17 22:26
4
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-237789-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.040506 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved