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

TTcloud(月$70)E3-1270V3 8GB内存 10Mbps带宽 ,日本独立服务器

关于TTCLOUD服务商在今年初的时候有介绍过一次,而且对于他们家的美国圣何塞服务器有过简单的测评,这个服务商主要是提供独立服务器业务的。目前托管硬件已经达到5000台服务器或节点,主要经营圣何塞,洛杉矶以及日本东京三个地区的数据中心业务。这次看到商家有推出了新上架的日本独立服务器促销活动,价格 $70/月起,季付送10Mbps带宽。也可以跟进客户的需求进行各种DIY定制。内存CPU硬盘流量带宽价...

RFCHOST - 洛杉矶CN2 GIA VPS季付23.9美元起 100Mbps带宽

RFCHOST,这个服务商我们可能有一些朋友知道的。不要看官网是英文就以为是老外服务商,实际上这个服务商公司在上海。我们实际上看到的很多商家,有的是繁体,有的是英文,实际上很多都是我们国人朋友做的,有的甚至还做好几个品牌域名,实际上都是一个公司。对于RFCHOST商家还是第一次分享他们家的信息,公司成立大约2015年左右。目前RFCHOST洛杉矶机房VPS正进行优惠促销,采用CN2优化线路,电信双...

GigsGigsCloud:$16/月KVM-1GB/30GB/1TB/1.6T高防/洛杉矶CN2 GIA+AS9929

GigsGigsCloud是一家成立于2015年老牌国外主机商,提供VPS主机和独立服务器租用,数据中心包括美国洛杉矶、中国香港、新加坡、马来西亚和日本等。商家VPS主机基于KVM架构,绝大部分系列产品中国访问速度不错,比如洛杉矶机房有CN2 GIA、AS9929及高防线路等。目前Los Angeles - SimpleCloud with Premium China DDOS Protectio...

assert函数为你推荐
阿里云系统阿里云系统用起来怎么样刷网站权重刷出来的流量会提高网站的权重吗?深圳公交车路线深圳公交车路线金山杀毒怎么样金山杀毒软件咋样?快速美白好方法脸部快速美白有什么好方法啊自助建站什么情况下采用自助建站方式建站好?数码资源网安卓有没有可以离线刷题的软件?如何建立自己的网站怎么创建自己的网站硬盘人克隆一个人需要多少人多长时间啊idc前线钢铁雄心2修改器
免费vps vps教程 163网 seovip 发包服务器 警告本网站美国保护 135邮箱 河南移动梦网 国外在线代理服务器 贵阳电信测速 网络速度 广州主机托管 七十九刀 贵州电信 碳云 傲盾代理 德国代理ip 一句话木马 电脑主机响 dhcp服务器是什么 更多