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

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

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

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

#inc lud e 《as s ert.h》void assert( int expression);as s ert的作用是现计算表达式express ion 如果其值为假(即为

0)那么它先向s td err打印一条出错信息

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

请看下面的程序清单b adp tr.c

#inc lud e 《s td io.h》

#inc lud e 《as s ert.h》

#inc lud e 《s td lib.h》int main(void)

{

F ILE*fp;fp=fop en(“te s t.txt” “w”);//以可写的方式打开一个文件如果不存在就创建一个同名文件

as s ert(fp); //所以这里不会出错fclose(fp);fp = fop en( “no exitfile.txt” “r” );//以只读的方式打开一个文件如果不存在就打开文件失败as s ert(fp); //所以这里出错fclose(fp); //程序永远都执行不到这里来return 0;

}

[root@localhost error_process]#gcc badptr.c

[root@localhost error_process]# 。 /a.outa.out b adp tr.c:14 main As s ertio n`fp ‘ failed.

已放弃

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

在调试结束后可以通过在包含#inc lud e 《as s ert.h》的语句之前插入#define NDEBUG来禁用as sert调用示例代码如下

#inc lud e 《s td io.h》

#define NDEBUG

#inc lud e 《as s ert.h》

用法总结与注意事项

1)在函数开始处检验传入参数的合法性

如

int res etBufferS ize(int nNewS ize)

{

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

//参数 nNewS ize缓冲区新长度

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

//说明保持原信息内容不变nNewS ize 《=0表示清除缓冲区as s ert(nNewS ize 》 =0);as s ert(nNewS ize 《=MAX_BUF F ER_S IZE);

。 。 。

}

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

不好 ass ert(nO ffs et 》 =0 && nO ffs et+nS ize

《=m_nInfo mat io nS iz e);

好 as s ert(nO ffs et 》 =0);as s ert(nO ffs et+nS ize 《=m_nInfomationS ize);

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

错误 ass ert(i++ 《 100)

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

正确 ass ert(i 《 100)

i++;

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

5)有的地方 as s ert不能代替条件过滤

ucloud国内云服务器2元/月起;香港云服务器4元/首月;台湾云服务器3元/首月

ucloud云服务器怎么样?ucloud为了扩大云服务器市场份额,给出了超低价云服务器的促销活动,活动仍然是此前的Ucloud全球大促活动页面。目前,ucloud国内云服务器2元/月起;香港云服务器4元/首月;台湾云服务器3元/首月。相当于2-4元就可以试用国内、中国香港、中国台湾这三个地域的云服务器1个月了。ucloud全球大促仅限新用户,国内云服务器个人用户低至56元/年起,香港云服务器也仅8...

A400互联(49元/月)洛杉矶CN2 GIA+BGP、1Gbps带宽,全场独服永久5折优惠

a400互联是一家成立于2020年商家,主营美国机房的产品,包括BGP线路、CN2 GIA线路的云服务器、独立服务器、高防服务器,接入线路优质,延迟低,稳定性高,额外也还有香港云服务器业务。当前,全场服务器5折,香港VPS7折,洛杉矶VPS5折,限时促销!A400互联官网:https://a400.net/优惠活动全场独服永久5折优惠(续费同价):0722香港VPS七折优惠:0711洛杉矶VPS五...

Digital-VM:服务器,$80/月;挪威/丹麦英国/Digital-VM:日本/新加坡/digital-vm:日本VPS仅$2.4/月

digital-vm怎么样?digital-vm在今年1月份就新增了日本、新加坡独立服务器业务,但是不知为何,期间终止了销售日本服务器和新加坡服务器,今天无意中在webhostingtalk论坛看到Digital-VM在发日本和新加坡独立服务器销售信息。服务器硬件是 Supermicro、采用最新一代 Intel CPU、DDR4 RAM 和 Enterprise Samsung SSD内存,默认...

assert函数为你推荐
淘宝客推广淘宝客怎么推广qq讨论组怎样进QQ讨论组网络明星想知道3大网络歌手是谁?人人时光机寻时光机歌词拂晓雅阁我对电脑操作不熟悉,想买一本自学的电脑书籍,是电脑入门那一类的,最好还有办公软件应用那一类的ps抠图技巧ps抠图多种技巧,越详细越好,急~~~~~~~不兼容安卓手机软件不兼容怎么办?网易公开课怎么下载如何将网易公开课下载到电脑上?xp系统停止服务XP系统为什么要停止服务?qq空间打扮QQ空间打扮
二级域名申请 域名备案批量查询 主机评测 asp.net主机 主机屋免费空间 win8升级win10正式版 轻量 ibrs 福建天翼加速 徐正曦 qq云端 稳定免费空间 空间技术网 美国独立日 空间登录首页 美国盐湖城 restart magento主机 标准机柜 西部数码主机 更多