| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1383 人关注过本帖
标题:大家在写C++程序的时候用assert函数吗?
只看楼主 加入收藏
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
结帖率:60%
收藏
 问题点数:0 回复次数:3 
大家在写C++程序的时候用assert函数吗?
如果用,在什么时候用呢?
搜索更多相关主题的帖子: assert 函数 
2008-10-12 15:08
lylyxt
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2006-11-27
收藏
得分: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
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:23
帖 子:862
专家分:1954
注 册:2008-10-12
收藏
得分:0 
一般地,某个变量(状态值或是对象什么),如果我明确知道它应该在什么样个范围下属于正常,注意是在代码没有BUG的条件下的假设,就用到assert,那么如果它出了这个正常范围,就说明自己的代码有BUG,OK,断言了就知道该在什么地方找BUG了。因为BUG都是未知的,我们不知道它在什么地方,这个办法至少可以告诉我们它在哪个地方,或是一个小范围,总比上万行甚至更多的代码里翻要觉得的轻松的多。
assert是调试手段之一,release下该代码是不会被编译的,总之捉虫请趁早。
2008-10-16 18:31
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
谢谢楼上两位了

2008-10-17 22:26
快速回复:大家在写C++程序的时候用assert函数吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023956 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved