缓冲区linux系统下如何使用assert函数

assert函数  时间:2021-02-26  阅读:()

linux系统下如何使用assert函数linux系统下使用as s ert函数的方法。下面是小编精心收集的资料供大家参考!

步骤如下ass ert宏的原型定义在《as s ert.h》中其作用是如果它的条件返回错误则终止程序执行原型定义

#inc lud e 《as s ert.h》void assert( int expression);as s ert的作用是现计算表达式express ion 如果其值为假(即为

0)那么它先向s td err打印一条出错信息

然后通过调用abort来终止程序运行。

请看下面的程序清单b adp tr.c

#inc lud e 《s td io.h》

#inc lud e 《as s ert.h》

#inc lud e 《s td lib.h》int main(void)

{

F ILE*fp;fp=fop en(“te s t.txt” “w”);//以可写的方式打开一个文件如果不存在就创建一个同名文件

as s ert(fp); //所以这里不会出错fclose(fp);fp = fop en( “no exitfile.txt” “r” );//以只读的方式打开一个文件如果不存在就打开文件失败as s ert(fp); //所以这里出错fclose(fp); //程序永远都执行不到这里来return 0;

}

[root@localhost error_process]#gcc badptr.c

[root@localhost error_process]# 。 /a.outa.out b adp tr.c:14 main As s ertio n`fp ‘ failed.

已放弃

使用as s ert的缺点是频繁的调用会极大的影响程序的性能增加额外的开销。

在调试结束后可以通过在包含#inc lud e 《as s ert.h》的语句之前插入#define NDEBUG来禁用as sert调用示例代码如下

#inc lud e 《s td io.h》

#define NDEBUG

#inc lud e 《as s ert.h》

用法总结与注意事项

1)在函数开始处检验传入参数的合法性

如

int res etBufferS ize(int nNewS ize)

{

//功能改变缓冲区大小

//参数 nNewS ize缓冲区新长度

//返回值缓冲区当前长度

//说明保持原信息内容不变nNewS ize 《=0表示清除缓冲区as s ert(nNewS ize 》 =0);as s ert(nNewS ize 《=MAX_BUF F ER_S IZE);

。 。 。

}

2)每个ass ert只检验一个条件 因为同时检验多个条件时如果断言失败无法直观的判断是哪个条件失败

不好 ass ert(nO ffs et 》 =0 && nO ffs et+nS ize

《=m_nInfo mat io nS iz e);

好 as s ert(nO ffs et 》 =0);as s ert(nO ffs et+nS ize 《=m_nInfomationS ize);

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

错误 ass ert(i++ 《 100)

这是因为如果出错 比如在执行之前i=100那么这条语句就不会执行那么i++这条命令就没有执行。

正确 ass ert(i 《 100)

i++;

4)ass ert和后面的语句应空一行以形成逻辑和视觉上的一致感

5)有的地方 as s ert不能代替条件过滤

RackNerd:便宜vps补货/1核/768M内存/12G SSD/2T流量/1G带宽,可选机房圣何塞/芝加哥/达拉斯/亚特拉大/荷兰/$9.49/年

RackNerd今天补货了3款便宜vps,最便宜的仅$9.49/年, 硬盘是SSD RAID-10 Storage,共享G口带宽,最低配给的流量也有2T,注意,这3款补货的便宜vps是intel平台。官方网站便宜VPS套餐机型均为KVM虚拟,SolusVM Control Panel ,硬盘是SSD RAID-10 Storage,共享G口带宽,大流量。CPU:1核心内存:768 MB硬盘:12 ...

Dataideas:$1.5/月KVM-1GB/10G SSD/无限流量/休斯顿(德州)_主机域名

Dataideas是一家2019年成立的国外VPS主机商,提供基于KVM架构的VPS主机,数据中心在美国得克萨斯州休斯敦,主机分为三个系列:AMD Ryzen系列、Intel Xeon系列、大硬盘系列,同时每个系列又分为共享CPU和独立CPU系列,最低每月1.5美元起。不过需要注意,这家没有主页,你直接访问根域名是空白页的,还好他们的所有套餐支持月付,相对风险较低。下面以Intel Xeon系列共...

MOACK:韩国服务器/双E5-2450L/8GB内存/1T硬盘/10M不限流量,$59.00/月

Moack怎么样?Moack(蘑菇主机)是一家成立于2016年的商家,据说是国人和韩国合资开办的主机商家,目前主要销售独立服务器,机房位于韩国MOACK机房,网络接入了kt/lg/kinx三条线路,目前到中国大陆的速度非常好,国内Ping值平均在45MS左右,而且商家的套餐比较便宜,针对国人有很多活动。不过目前如果购买机器如需现场处理,由于COVID-19越来越严重,MOACK办公楼里的人也被感染...

assert函数为你推荐
香港代理ip求香港澳门地区的代理IP谢谢分享百度k站百度k站的原因是什么vbscript教程vbs 学习方法以及 vbs 实例 有编程基础畅想中国未来的中国是什么样子的云挂机有免费的云挂机软件吗?gbk编码表如何制作GBK与Unicode的对照表发邮件怎么发发邮件怎么发?三星s8什么时候上市三星s8什么时候首发声母是什么22个声母是什么声母是什么哪些是声母,哪些是韵母,
广州服务器租用 欧洲免费vps 台湾服务器 免费网站监控 网站保姆 2017年黑色星期五 大容量存储 铁通流量查询 骨干网络 vip购优汇 电信托管 免费私人服务器 免费asp空间 国外网页代理 789电视剧网 服务器防御 服务器托管价格 腾讯云平台 windowssever2008 godaddy退款 更多