关于assert

1.什么是assert?

  在C中assert是定义在<assert.h>中的一个macro define。

  语法规范:assert(expr):如果expr为真,则继续执行下一句;如果expr为假,报错:assertion 'expr' failed并退出程序

2.assert有什么用?

assert是一种防御式编程方式,减少编程错误。最常用的是在函数开始的地方,检测所有参数。有时候也可以在调用函数后,检查上下文是否正确。在代码中适当位置使用assert可以有效的帮助我们测试程序。

3.注意事项

  测试框架知识在开发和调试的时候有用。

  release的软件:如果还要运行这些测试框架就会严重影响性能,所以C语言中规定如果包含在assert.h之前定义的一个NDEBUG宏,就可以禁用asset.h中的assert宏定义,代码中的assert就不起作用了·.

#define NDEBUG
#include <assert.h>

//特别的gcc 有定义macro的option
gcc -D NDEBUG

4.什么时候我们用assert什么时候我们处理运行时的错误(C中返回错误值或C++中throw异常)?

  如果那个错误是由于程序员错误编码所造成的(例如传入不合法的参数),应该使用assert;如果那个错误是程序员无法避免,而是由运行时的环境所造成的,就要处理运行时错误(例如开启文件失败,数据库打开失败)。

扫描二维码关注公众号,回复: 3347352 查看本文章

 

猜你喜欢

转载自www.cnblogs.com/lewisliu111/p/9700785.html