断言其实是防止程序意外出错的一种宏,如果其参数计算为假,则程序发出警告,且退出。
最常见的用法就是在函数入口处保证输入参数的正确性。
例如有一个单链表,无头,单向不循环,结点含data,next,现在写一个函数,获取指针所指结点的下一个结点的data:
int GetNext(pNode* pn)
{//如果为空,则出错,因为没有后续结点,没有这一条的话如果传入NULL则程序运行出错
assert(pNode != NULL) return(pn->next->data);
}
一般来说,在程序必须符合一定条件的情况下,才能继续运行,否则就会产生不可预期的错误。
比如除0操作,就可以对除数(暂命名为iDividend)进行断言:
assert( iDividend != 0 );
一旦iDividend==0,程序就会报错,并自动退出。
C语言有assert的关键字
assert(a)一般就是if (!(a_)) xxx;
在不满足给定条件的时候以某种方法报告错误
assert只是调试用的。为了查明错误之类。一般来说开发人员都会针对工程写自己的assert。