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

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

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

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

#include 《assert.h》

1

void assert( int expression);assert的作用是现计算表达式expression 如果其值为假(即为0)那么它先向stde rr打印一条出错信息

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

请看下面的程序清单ba dpt r.c

#include 《stdio.h》

#include 《assert.h》

#include 《stdlib.h》

2

int main(void)

{

FILE*fp;fp=fope n(test.txt w);//以可写的方式打开一个文件如果不存在就创建一个同名文件assert(fp); //所以这里不会出错fc lo s e(fp);fp=fo pen(noexitfile.txt r);//以只读的方式打开一个文件如果不存在就打开文件失败

3

assert(fp); //所以这里出错fc lo s e(fp); //程序永远都执行不到这里来return 0;

}

[root@localhost error_process]#gcc badptr.c

[root@localhost erro r_process]# 。 /a.outa.out badptr.c:14 main Asse rtio n `fp‘faile d.

4

已放弃

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

在调试结束后可以通过在包含#include 《assert.h》的语句之前插入#define NDEBUG来禁用assert调用示例代码如下

#include 《stdio.h》

#define NDEBUG

#include 《assert.h》

5

用法总结与注意事项

1)在函数开始处检验传入参数的合法性如int resetBuffe rSize(int nNewSize)

{

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

//参数 nNewSize缓冲区新长度

6

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

//说明保持原信息内容不变nNewSize 《=0表示清除缓冲区assert(nNewSize 》 =0);assert(nNewSize 《=MAX_BUFFER_SIZE);

。 。 。

}

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

7

不好 assert(nOffset》=0&&nOffset+nS ize

《=m_nInfomationSize);

好 assert(nOffset 》 =0);assert(nOffset+nSize 《=m_nInfomationSize);

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

错误 assert(i++ 《 100)

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

8

正确 assert(i 《 100)i++;

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

5)有的地方 assert不能代替条件过滤

9

ParkInHost - 俄罗斯VPS主机 抗投诉 55折,月付2.75欧元起

ParkInHost主机商是首次介绍到的主机商,这个商家是2013年的印度主机商,隶属于印度DiggDigital公司,主营业务有俄罗斯、荷兰、德国等机房的抗投诉虚拟主机、VPS主机和独立服务器。也看到商家的数据中心还有中国香港和美国、法国等,不过香港机房肯定不是直连的。根据曾经对于抗投诉外贸主机的了解,虽然ParkInHost以无视DMCA的抗投诉VPS和抗投诉服务器,但是,我们还是要做好数据备...

2021HawkHost老鹰主机黑色星期五虚拟主机低至3.5折 永久4.5折

老鹰主机HawkHost是个人比较喜欢的海外主机商,如果没有记错的话,大约2012年左右的时候算是比较早提供支付宝付款的主机商。当然这个主机商成立时间更早一些的,由于早期提供支付宝付款后,所以受众用户比较青睐,要知道我们早期购买海外主机是比较麻烦的,信用卡和PAYPAL还没有普及,大家可能只有银联和支付宝,很多人选择海外主机还需要代购。虽然如今很多人建站少了,而且大部分人都用云服务器。但是老鹰主机...

Hosteons:新上1Gbps带宽KVM主机$21/年起,AMD Ryzen CPU+NVMe高性能主机$24/年起_韩国便宜服务器

我们在去年12月分享过Hosteons新上AMD Ryzen9 3900X CPU及DDR4内存、NVMe硬盘的高性能VPS产品的消息,目前商家再次发布了产品更新信息,暂停新开100M带宽KVM套餐,新订单转而升级为新的Budget KVM VPS(SSD)系列,带宽为1Gbps端口,且配置大幅升级,目前100M带宽仅保留OpenVZ架构产品可新订购,所有原有主机不变,用户一直续费一直可用。Bud...

assert函数为你推荐
迅雷不能登录为什么我的迅雷不能登陆了天府热线为什么四川天府热线区经常进去不到啊??如何免费开通黄钻怎样才能免费开通黄钻照片转手绘有什么软件可以把相片变成手绘的,不是美图秀秀里面的不兼容vivo手机和软件不兼容怎么办?镜像文件是什么什么是文件镜像?什么是镜像文件?神雕侠侣礼包大全神雕侠侣手游每天送的元宝买什么合适宕机何谓宕机?ios系统iOS系统为什么那么好网站优化方案一个网站进行优化的流程及步骤
购买域名和空间 服务器评测 hkbn windows2003iso 最好看的qq空间 坐公交投2700元 什么是刀片服务器 怎么测试下载速度 vip购优惠 空间登入 备案空间 linode支付宝 智能dns解析 帽子云排名 畅行云 实惠 中国电信宽带测速 免费网站加速 cc攻击 天翼云主机 更多