C语言中断言库与断言函数assert()的用法总结

断言库与断言函数的相关使用总结!

  • 断言函数的使用
  • 断言函数及断言库总结
      • #define NDEBUG
  • 断言函数在实现常见算法中的使用

断言函数的使用

话不多说,先来个例子感受一番断言函数assert()到底有什么功能。
C语言中断言库与断言函数assert()的用法总结_第1张图片

由上面例子可知,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 头文件前面加上#define NDEBUG,由下图可以看到,加了#define NDEBUG之后assert()函数就失效了。
C语言中断言库与断言函数assert()的用法总结_第2张图片

断言函数在实现常见算法中的使用

断言函数在一些算法中,经常出现,作为判断某个指标是否达标的条件。比如在队列实现中
例如:队列指针为Queue * pq;
在一些入队、出队等操作中会先检验一下pq指针是否为空,这个时候就可以使用断言函数assert(pq);

你可能感兴趣的:(c语言,开发语言)