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

月神科技-美国CERA 5折半价倒计时,上新华中100G高防云59起!

官方网站:点击访问月神科技官网优惠码:美国优惠方案:CPU:E5-2696V2,机房:国人热衷的优质 CeraNetworks机房,优惠码:3wuZD43F 【过期时间:5.31,季付年付均可用】活动方案:1、美国机房:洛杉矶CN2-GIA,100%高性能核心:2核CPU内存:2GB硬盘:50GB流量:Unmilited端口:10Mbps架构:KVM折后价:15元/月、150元/年传送:购买链接洛...

AlphaVPS(€3.99/月)VPS年付15欧,AMD EYPC+NVMe系列起

AlphaVPS是一家保加利亚本土主机商(DA International Group Ltd),提供VPS主机及独立服务器租用等,数据中心包括美国(洛杉矶/纽约)、德国、英国和保加利亚等,公司办公地点跟他们提供的保加利亚数据中心在一栋楼内,自有硬件,提供IPv4+IPv6,支持PayPal或者信用卡等方式付款。商家提供的大硬盘VPS主机,提供128GB-2TB磁盘,最低年付15欧元起,也可以选择...

月神科技:香港CN2/洛杉矶CN2/华中电信高防vps,月付20元起

月神科技怎么样?月神科技是由江西月神科技有限公司运营的一家自营云产品的IDC服务商,提供香港安畅、香港沙田、美国CERA、华中电信等机房资源,月神科技有自己的用户群和拥有创宇认证,并且也有电商企业将业务架设在月神科技的平台上。目前,香港CN2云服务器、洛杉矶CN2云主机、华中电信高防vps,月付20元起。点击进入:月神科技官方网站地址月神科技vps优惠信息:香港安畅CN2-GIA低至20元核心:2...

assert函数为你推荐
金山杀毒怎么样金山杀毒好吗依赖注入Spring 的依赖注入是什么意思?微信如何建群微信怎么建群?安卓应用平台有没有什么安卓游戏都能找到的应用商店或者游戏中心彩信中心移动的彩信中心是?主页是?收不到彩信,怎么设置?xv播放器下载xv播放器怎么下载?怎么点亮qq空间图标QQ空间图标怎么点亮?xp系统停止服务XP系统为什么要停止服务?mate8价格现在买华为mate8高配划算吗电子商务网站模板网页制作模板
网站空间申请 apache虚拟主机 linuxapache虚拟主机 ipage 赵容 便宜服务器 息壤主机 hawkhost sugarsync parseerror 网站挂马检测工具 铁通流量查询 169邮箱 tna官网 cdn加速是什么 吉林铁通 cloudlink 阿里云官方网站 免费的asp空间 测速电信 更多