C语言中断言ASSERT

您所在的位置:网站首页 宁波北仑政务服务网 C语言中断言ASSERT

C语言中断言ASSERT

2022-12-19 19:28| 来源: 网络整理| 查看: 265

ASSERT

我⼀直以为

assert

仅仅是个报错函数,事实上,它居然是个宏,并且作⽤并⾮

报错

  在经过对其进⾏⼀定了解之后,对其作⽤及⽤法有了⼀定的了解,

assert()

的⽤法像是⼀种

契约式编程

,在我的理解中,其表达的意思

就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于⼀个

if

语句:

if(

假设成⽴

)

{     

 

程序正常运⾏;

}

else

{      

 

报错

&&

终⽌程序!(避免由程序运⾏引起更⼤的错误)

  

}

  但是这样写的话,就会有⽆数个

if

语句,甚⾄会出现,⼀个

if

语句的括号从⽂件头到⽂件尾,并且⼤多数情况下,我们要进⾏验证的假

设,只是属于偶然性事件,⼜或者我们仅仅想测试⼀下,⼀些最坏情况是否发⽣,所以这⾥有了

assert().

   

assert

宏的原型定义在

assert.h

中,其作⽤是如果它的条件返回错误,则终⽌程序执⾏

#include "assert.h" 

void assert( int expression );

  

assert

的作⽤是现计算表达式

 expression 

,如果其值为假(即为

0

),那么它先向

stderr

打印⼀条出错信息

,

然后通过调⽤

 abort 

来终⽌程

序运⾏。

使⽤

assert

的缺点是,频繁的调⽤会极⼤的影响程序的性能,增加额外的开销。

 

  在调试结束后,可以通过在包含

#include 

的语句之前插⼊

 #define NDEBUG 

来禁⽤

assert

调⽤,⽰例代码如下:

 

#include 

#define NDEBUG 

#include

  ⽤法总结与注意事项:

  

1)

在函数开始处检验传⼊参数的合法性

 

int resetBufferSize(int nNewSize) 

//

功能

:

改变缓冲区⼤⼩

//

参数

:nNewSize 

缓冲区新长度

 

//

返回值

:

缓冲区当前长度

 

//

说明

:

保持原信息内容不变

 nNewSize= 0); 

assert(nNewSize 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3