断言库与断言函数的相关使用总结!
- 断言函数的使用
- 断言函数及断言库总结
- #define NDEBUG
- 断言函数在实现常见算法中的使用
断言函数的使用
话不多说,先来个例子感受一番断言函数assert()
到底有什么功能。
由上面例子可知,assert()
函数中在z的值大于40的时候什么问题都没有,可当z的值小于40的时候就直接报错Assertion failed
,并且给出了报错行就在assert()
函数这一行,说明z小于40时没有assert()
函数直接终止了程序
断言函数及断言库总结
断言函数函数原型为:void assert (int expression)
,包含在头文件assert.h
中
他接受一个整形表达式作为参数(z > 40):
如果表达式为假,则assert()
函数就在标准错误流中写入一条错误信息,也就是报错嘛。并且会调用abort()
函数终止程序(**abort()函数的原型就在stdib.h
**中)。
如果表达式为真,则程序顺利通过。
#define NDEBUG
使用assert()
函数不仅可以自动标识出出问题的行号,而且如果觉得程序没有什么问题,可以在#include <assert.h>
头文件前面加上#define NDEBUG
,由下图可以看到,加了#define NDEBUG
之后assert()
函数就失效了。
断言函数在实现常见算法中的使用
断言函数在一些算法中,经常出现,作为判断某个指标是否达标的条件。比如在队列实现中
例如:队列指针为Queue * pq;
在一些入队、出队等操作中会先检验一下pq指针是否为空,这个时候就可以使用断言函数assert(pq);