缓冲区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不能代替条件过滤

Friendhosting 黑色星期五 VDS/VPS可享四五折优惠促销

Friendhosting商家在前面的篇幅中也又陆续介绍到,是一家保加利亚主机商,主要提供销售VPS和独立服务器出租业务,数据中心分布在:荷兰、保加利亚、立陶宛、捷克、乌克兰和美国洛杉矶等。这不近期黑色星期五活动,商家也有推出了黑五优惠,VPS全场一次性45折,虚拟主机4折,全球多机房可选,老用户续费可获9折加送1个月使用时长,VDS折后最低仅€14.53/年,有需要的可以看看。Friendhos...

CloudCone($82/月)15-100M不限流量,洛杉矶CN2 GIA线路服务器

之前分享过很多次CloudCone的信息,主要是VPS主机,其实商家也提供独立服务器租用,同样在洛杉矶MC机房,分为两种线路:普通优化线路及CN2 GIA,今天来分享下商家的CN2 GIA线路独立服务器产品,提供15-100Mbps带宽,不限制流量,可购买额外的DDoS高防IP,最低每月82美元起,支持使用PayPal或者支付宝等付款方式。下面分享几款洛杉矶CN2 GIA线路独立服务器配置信息。配...

特网云-新上线香港五区补货资源充足限时抢 虚拟主机6折,低至38元!

官方网站:点击访问特网云官网活动方案:===========================香港云限时购==============================支持Linux和Windows操作系统,配置都是可以自选的,非常的灵活,宽带充足新老客户活动期间新购活动款产品都可以享受续费折扣(只限在活动期间购买活动款产品才可享受续费折扣 优惠码:AADE01),购买折扣与续费折扣不叠加,都是在原价...

assert函数为你推荐
weipin唯品宝是什么?和唯品金融有什么关系?网络明星网络明星是怎样成名的呢?如何又是网络明星呢?!!arm开发板arm开发板是干什么用的,是用在什么领域方面的今日热点怎么删除“今日热点”到底要怎样才能取消弹窗,每次开机都会镜像文件是什么系统镜像是什么安卓应用平台哪个手机应用平台的软件比较正版,安全?硬盘人500G的硬盘容量是多少啊?人人逛街人人都喜欢逛街吗宕机何谓宕机?云挂机云挂机每天2+元你提了吗?
域名拍卖 看国外视频直播vps 堪萨斯服务器 新加坡服务器 宕机监控 ibrs 国外网站代理服务器 亚洲小于500m 京东商城0元抢购 怎么测试下载速度 工信部icp备案号 国外代理服务器地址 流量计费 太原联通测速 畅行云 主机返佣 阿里dns 开心online google搜索打不开 免费赚q币 更多