永发信息网

assert() 是什么?怎样用它?

答案:3  悬赏:0  手机版
解决时间 2021-02-02 22:13
  • 提问者网友:趣果有间
  • 2021-02-02 15:01
assert() 是什么?怎样用它?
最佳答案
  • 五星知识达人网友:山河有幸埋战骨
  • 2021-02-02 15:58
这是个定义在 中的宏, 用来测试断言。一个断言本质上是写下程序员的假设, 如果假设被违反, 那表明有个严重的程序错误。例如, 一个假设只接受非空指针的函数, 可以写:
assert(p != NULL);

一个失败的断言会中断程序。断言不应该用来捕捉意料中的错误, 例如 malloc() 或 fopen() 的失败。
全部回答
  • 1楼网友:独钓一江月
  • 2021-02-02 16:45
原本以为assert是C++中的东东,没想到C里就有。:-)

assert() 是个定义在 中的宏, 用来测试断言。一个断言本质上是写下程序员的假设, 如果假设被违反, 那表明有个严重的程序错误。例如, 一个假设只接受非空指针的函数, 可以写:
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);
}
第一个断言的用法是正确的,因为它被用来检查在该程序正常工作时绝不应该发生的非法情况。第二个断言的用法相当不同,它所测试的是错误情况,是在其最终产品中肯定会出现并且必须对其进行处理的错误情况。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯