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

RAKsmart:美国洛杉矶独服,E3处理器/16G/1TB,$76.77/月;美国/香港/日本/韩国站群服务器,自带5+253个IPv4

RAKsmart怎么样?RAKsmart机房即日起开始针对洛杉矶机房的独立服务器进行特别促销活动:低至$76.77/月,最低100Mbps带宽,最高10Gbps带宽,优化线路,不限制流量,具体包括有:常规服务器、站群服务器、10G大带宽服务器、整机机柜托管。活动截止6月30日结束。RAKsmart,美国华人老牌机房,专注于圣何塞服务器,有VPS、独立服务器等。支持PayPal、支付宝付款。点击直达...

NameCheap黑色星期五和网络礼拜一

如果我们较早关注NameCheap商家的朋友应该记得前几年商家黑色星期五和网络星期一的时候大促采用的闪购活动,每一个小时轮番变化一次促销活动而且限量的。那时候会导致拥挤官网打不开迟缓的问题。从去年开始,包括今年,NameCheap商家比较直接的告诉你黑色星期五和网络星期一为期6天的活动。没有给你限量的活动,只有限时六天,这个是到11月29日。如果我们有需要新注册、转入域名的可以参加,优惠力度还是比...

菠萝云:带宽广州移动大带宽云广州云:广州移动8折优惠,月付39元

菠萝云国人商家,今天分享一下菠萝云的广州移动机房的套餐,广州移动机房分为NAT套餐和VDS套餐,NAT就是只给端口,共享IP,VDS有自己的独立IP,可做站,商家给的带宽起步为200M,最高给到800M,目前有一个8折的优惠,另外VDS有一个下单立减100元的活动,有需要的朋友可以看看。菠萝云优惠套餐:广州移动NAT套餐,开放100个TCP+UDP固定端口,共享IP,8折优惠码:gzydnat-8...

assert函数为你推荐
回收站在哪回收站去哪里了?百度k站百度K站是怎么回事?刷网站权重怎么才能提升网站百度权重呢支付宝查询余额我的支付宝如何查询余额邮箱打不开怎么办163邮箱突然打不开了怎么办flash导航条如何用Flash制作简单的导航栏微信如何建群微信怎么建群?arm开发板想购买一个ARM开发板,选什么类型的好显卡温度多少正常显卡温度多少算正常?中小企业信息化信息化为中小企业发展带来了哪些机遇
域名主机管理系统 仿牌空间 bbr 空间打开慢 表单样式 evssl证书 e蜗牛 创梦 135邮箱 cdn加速是什么 免费dns解析 四核服务器 免费的asp空间 国外的代理服务器 中国电信测速网站 西安主机 华为云建站 1美元 netvigator 数据湾 更多