assert用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了assert用法相关的知识,希望对你有一定的参考价值。

我们公司的交换机程序里(C编写)有assert的语句,用来检查值是否为0,师傅说,如果为0,进程会死掉。但该语句出现在命令界面的进程里,死掉必然导致系统没有响应。

虽然说这个值为0一定不可能发生,但是它写这句话用意是什么呢?为什么要让一种可能使系统崩溃的情况存在?

还有就是用assert来检查值和用if来判断并返回错误标记各有什么好处

assert——断言,你确定某个表达式正常情况下应为真。
debug时,出错了则说明你考虑不周,前面有错,主要是用于的排除错误。
release时,assert不起作用。
参考技术A assert主要用于程序的测试阶段,在发行版程序中,可以通过定义NDEBUG宏的办法关闭assert

当assert测试不满足条件时,程序会中断并退出,同时给出中断提示信息。

当if测试不满足条件时,会继续执行后面的语句,不会中断程序。
参考技术B 凡是响应assert
说明异常
所以要做的
不是避免assert产生的闪退
而是根据每个闪退的点
避免出现assert失败的情况。

assert()函数用法

assert是定义在头文件cassert中的宏

其作用是如果他的返回值不为真则终止程序。

assert(expression);

if 为假,先向stderr打印一条错误信息,再用abort终止程序

缺点:频繁调用影响程序性能,增加程序开销。

可在调用cassert后,用#define NDEBUG来禁用assert

每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败

不能使用改变环境的语句,因为assert只在DEBUG个生效,如果这么做,会使用程序在真正运行时遇到问题

有的地方,assert不能代替条件过滤

以上是关于assert用法的主要内容,如果未能解决你的问题,请参考以下文章

assert()函数用法总结

assert()函数用法总结

浅谈assert()函数的用法

assert的用法

assert()函数用法

assertion的用法