缓冲区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不能代替条件过滤

Spinservers:美国独立服务器(圣何塞),$111/月

spinservers是Majestic Hosting Solutions,LLC旗下站点,主营美国独立服务器租用和Hybrid Dedicated等,spinservers这次提供的大硬盘、大内存服务器很多人很喜欢。TheServerStore自1994年以来,它是一家成熟的企业 IT 设备供应商,专门从事二手服务器和工作站业务,在德克萨斯州拥有40,000 平方英尺的仓库,库存中始终有数千台...

georgedatacenter39美元/月$20/年/洛杉矶独立服务器美国VPS/可选洛杉矶/芝加哥/纽约/达拉斯机房/

georgedatacenter这次其实是两个促销,一是促销一款特价洛杉矶E3-1220 V5独服,性价比其实最高;另外还促销三款特价vps,georgedatacenter是一家成立于2019年的美国VPS商家,主营美国洛杉矶、芝加哥、达拉斯、新泽西、西雅图机房的VPS、邮件服务器和托管独立服务器业务。georgedatacenter的VPS采用KVM和VMware虚拟化,可以选择windows...

月神科技 国内上新成都高防 全场八折促销续费同价!

月神科技是由江西月神科技有限公司运营的一家自营云产品的IDC服务商,提供香港安畅、香港沙田、美国CERA、成都电信等机房资源,月神科技有自己的用户群和拥有创宇认证,并且也有电商企业将业务架设在月神科技的平台上。本次带来的是全场八折促销,续费同价。并且上新了国内成都高防服务器,单机100G集群1.2T真实防御,上层屏蔽UDP,可定制CC策略。非常适合网站用户。官方网站:https://www.ysi...

assert函数为你推荐
湖南商标注册湖南商标注册最好的公司拂晓雅阁现在最流行的系统是那个???快速美白好方法脸部快速美白有什么好方法啊网站运营网络运营主管的主要工作职责是什么?数码资源网哪个网站可以直接在线做照片?功能要齐全的`ps抠图技巧ps中怎么抠图?淘宝店推广如何推广淘宝店9flash在“属性”对话框中的“Move”后面的框中输入Flash动画文件的绝对路径及文件名,这句话怎么操作?童之磊湖北中文在线数字出版有限公司怎么样?iphone越狱后怎么恢复苹果越狱后如何恢复
info域名注册 万网域名 最新代理服务器地址 pw域名 z.com 美元争夺战 evssl 浙江独立 web服务器的架设 赞助 免费phpmysql空间 昆明蜗牛家 路由跟踪 韩国代理ip 防cc攻击 lamp的音标 腾讯网盘 酷锐 ipower 服务器操作系统 更多