博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

ly44770

arm+linux学习中
   ly44770.cublog.cn
关于作者  
姓名:ly44770
职业:嵌入式
年龄:*
位置:北京
个性介绍:arm+linux学习中

我的分类  




assert() 是什么?怎样用它?
原本以为assert是C++中的东东,没想到C里就有。:-)
 
assert() 是个定义在 <assert.h> 中的宏, 用来测试断言。一个断言本质上是写下程序员的假设, 如果假设被违反, 那表明有个严重的程序错误。例如, 一个假设只接受非空指针的函数, 可以写:
    assert(p != NULL);
一个失败的断言会中断程序。断言不应该用来捕捉意料中的错误, 例如  malloc() 或 fopen() 的失败。
 
 
不是用来检查错误的
 
当程序员刚开始使用断言时,有时会错误地利用断言去检查真正地错误,而不去检查非法的情况。看看在下面的函数strdup中的两个断言:
char* strdup(char* str)
{
    char* strNew;
    assert(str != NULL);
    strNew = (char*)malloc(strlen(str)+1);
    assert(strNew != NULL);
    strcpy(strNew, str);
    return(strNew);
}
第一个断言的用法是正确的,因为它被用来检查在该程序正常工作时绝不应该发生的非法情况。第二个断言的用法相当不同,它所测试的是错误情况,是在其最终产品中肯定会出现并且必须对其进行处理的错误情况。
 

 发表于: 2008-03-15,修改于: 2008-03-15 17:13 已浏览675次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.00927

京ICP证041476号