缓冲区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

瓜云互联-美国洛杉矶高防CN2高防云服务器,新老用户均可9折促销!低至32.4元/月!

瓜云互联一直主打超高性价比的海外vps产品,主要以美国cn2、香港cn2线路为主,100M以内高宽带,非常适合个人使用、企业等等!安全防护体系 弹性灵活,能为提供简单、 高效、智能、快速、低成本的云防护,帮助个人、企业从实现网络攻击防御,同时也承诺产品24H支持退换,不喜欢可以找客服退现,诚信自由交易!官方网站:点击访问瓜云互联官网活动方案:打折优惠策略:新老用户购买服务器统统9折优惠预存返款活动...

百纵科技,美国独立服务器 E52670*1 32G 50M 200G防御 899元/月

百纵科技:美国高防服务器,洛杉矶C3机房 独家接入zenlayer清洗 带金盾硬防,CPU全系列E52670、E52680v3 DDR4内存 三星固态盘阵列!带宽接入了cn2/bgp线路,速度快,无需备案,非常适合国内外用户群体的外贸、搭建网站等用途。C3机房,双程CN2线路,默认200G高防,3+1(高防IP),不限流量,季付送带宽美国洛杉矶C3机房套餐处理器内存硬盘IP数带宽线路防御价格/月套...

易探云2核2G5M仅330元/年起,国内挂机宝云服务器,独立ip

易探云怎么样?易探云是国内一家云计算服务商家,致力香港服务器、国内外服务器租用及托管等互联网业务,目前主要地区为运作香港BGP、香港CN2、广东、北京、深圳等地区。目前,易探云推出深圳或北京地区的适合挂机和建站的云服务器,国内挂机宝云服务器(可选深圳或北京地区),独立ip;2核2G5M挂机云服务器仅330元/年起!点击进入:易探云官方网站地址易探云国内挂机宝云服务器推荐:1、国内入门型挂机云服务器...

assert函数为你推荐
找不到光驱我的电脑里找不到光驱微信如何建群在微信里怎么创建一个群别人可以加入扫描二维码的加入百度手写百度如何手写:淘宝店推广淘宝店铺推广有哪些渠道?免费免费建站可以不用钱免费做一个网站吗idc前线永恒之塔内侧 删档吗 ?系统分析员系统分析师是什么职业?主要做什么工作?什么是云平台云平台和云计算的区别是什么?服务器连接异常手机服务器连接异常声母是什么什么是声母,什么是音母?
虚拟主机系统 绍兴服务器租用 重庆服务器租用 香港主机租用 stablehost yardvps 便宜域名 wavecom ix主机 42u标准机柜尺寸 密码泄露 godaddy域名证书 中国电信测速112 免费智能解析 石家庄服务器托管 免费网络 带宽测试 nnt windowssever2008 建站技术 更多