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

DogYun(300元/月),韩国独立服务器,E5/SSD+NVMe

DogYun(中文名称狗云)新上了一批韩国自动化上架独立服务器,使用月减200元优惠码后仅需每月300元,双E5 CPU,SSD+NVMe高性能硬盘,支持安装Linux或者Windows操作系统,下单自动化上架。这是一家成立于2019年的国人主机商,提供VPS和独立服务器租用等产品,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等。下面分享这款自动化上架韩国独立服务器的配置和优惠码信息。...

萤光云(20元/月),香港CN2国庆特惠

可以看到这次国庆萤光云搞了一个不错的折扣,香港CN2产品6.5折促销,还送50的国庆红包。萤光云是2002年创立的商家,本次国庆活动主推的是香港CN2优化的机器,其另外还有国内BGP和高防服务器。本次活动力度较大,CN2优化套餐低至20/月(需买三个月,用上折扣+代金券组合),有需求的可以看看。官方网站:https://www.lightnode.cn/地区CPU内存SSDIP带宽/流量价格备注购...

新版本Apache HTTP Server 2.4.51发布更新(有安全漏洞建议升级)

今天中午的时候看到群里网友在讨论新版本的Apache HTTP Server 2.4.51发布且建议更新升级,如果有服务器在使用较早版本的话可能需要升级安全,这次的版本中涉及到安全漏洞的问题。Apache HTTP 中2.4.50的修复补丁CVE-2021-41773 修复不完整,导致新的漏洞CVE-2021-42013。攻击者可以使用由类似别名的指令配置将URL映射到目录外的文件的遍历攻击。这里...

assert函数为你推荐
视频截图软件我想知道什么软件可以从视频中截图?windows优化大师怎么用windows优化大师怎么用啊?云播怎么看片手机云播怎么用?吴晓波频道买粉五大知识付费平台有哪些?渗透测试web渗透测试有前途吗二叉树遍历怎么正确理解二叉树的遍历镜像文件是什么什么是文件镜像?什么是镜像文件?奇虎论坛奇虎论坛最新推荐歌曲列表·安装迅雷看看播放器迅雷看看播放器下了安装不了安装迅雷看看播放器怎样安装迅雷看看播放器
下载虚拟主机 美国虚拟主机推荐 vps租用 日本动态vps highfrequency 电影服务器 NetSpeeder 万网优惠券 lamp配置 嘉洲服务器 gg广告 世界测速 ftp免费空间 vip域名 raid10 彩虹云 google台湾 主机管理系统 石家庄服务器托管 iki 更多