小编教你linux系统下如何使用assert函数。

只要看得懂程序的人都知道assert,在Windows下使用VC编写,使用assert之后,只需在IDE中设置为debug版或者是release版,编译器就会自动忽略掉assert。但是在Linux下,必须要在编译命令中加入-DNDEBUG中,系统编译时才不会将assert编译进去。不然,程序运行时有可能会被assert中断。那linux系统下如何使用assert函数呢?下面就和大家说一下linux系统下使用assert函数的方法。

linux系统下如何使用assert函数?

步骤如下:

assert宏的原型定义在《assert.h》中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:

#include 《assert.h》

void assert( int expression );

assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,

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

请看下面的程序清单badptr.c:

#include 《stdio.h》

#include 《assert.h》

#include 《stdlib.h》

int main( void )

{

FILE *fp;

fp = fopen( “test.txt”, “w” );//以可写的方式打开一个文件,如果不存在就创建一个同名文件

assert( fp ); //所以这里不会出错

fclose( fp );

fp = fopen( “noexitfile.txt”, “r” );//以只读的方式打开一个文件,如果不存在就打开文件失败

assert( fp ); //所以这里出错

fclose( fp ); //程序永远都执行不到这里来

return 0;

}

[root@localhost error_process]# gcc badptr.c

[root@localhost error_process]# 。/a.out

a.out: badptr.c:14: main: Assertion `fp‘ failed.

已放弃

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

在调试结束后,可以通过在包含#include 《assert.h》的语句之前插入 #define NDEBUG 来禁用assert调用,示例代码如下:

#include 《stdio.h》

#define NDEBUG

#include 《assert.h》

用法总结与注意事项:

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

如:

int resetBufferSize(int nNewSize)

{

//功能:改变缓冲区大小,

//参数:nNewSize 缓冲区新长度

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

//说明:保持原信息内容不变 nNewSize《=0表示清除缓冲区

assert(nNewSize 》= 0);

assert(nNewSize 《= MAX_BUFFER_SIZE);

。。。

}

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

不好: assert(nOffset》=0 && nOffset+nSize《=m_nInfomationSize);

好: assert(nOffset 》= 0);

assert(nOffset+nSize 《= m_nInfomationSize);

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

错误: assert(i++ 《 100)

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

正确: assert(i 《 100)

i++;

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

5)有的地方,assert不能代替条件过滤

上述也就是linux系统下使用assert函数方法的全部内容了。如你还不知道在linux系统下如何使用assert函数的,不妨请你先看看上述的内容啊!看完了你也就知道怎么使用assert函数了。有兴趣的用户可以去来了解一下。

本文来自网络投稿,来自作者春天。不代表酷牛教程立场,如若转载,请注明出处:https://www.xukn.com/330090.html

(0)
春天春天
上一篇 2023-06-14 17:05
下一篇 2023-06-14 17:05

相关推荐

  • 分享如何使用ai设计彩色的圆环饼状图

    如何使用ai设计彩色的圆环饼状图?ai是一款广泛应用于出版、多媒体和在线图像的工业标准矢量插画的软件。想要使用ai设计彩色的圆环饼环状图,但是不知道具体怎么操作。下面就是ai设计彩...

    2023-06-27 PC教程
    0190
  • 分享美味不用等APP如何使用

    美味不用等APP如何使用?美味不用等是一款非常不错的订餐软件,用户们可以在里面预订餐位和餐厅点菜等,那么我们该如何使用这款软件呢,下面就给大家分享美味不用等APP的使用方法。 首先...

    2023-06-27 PC教程
    0150
  • 小编教你如何使用百度网盘客户端分享文件

    百度网盘是最经常使用的网盘存储软件,不仅可以节省电脑内存,还可以上传、下载需要的资源,非常方便。那就有用户问了想要把自己的文件分享给朋友或者网友,该如何操作呢?下面我们就来看看。 ...

    2023-07-17 PC教程
    0200
  • 我来分享Win7系统如何使用代理服务器上网。

    使用一个合适的免费代理上网会加快我们访问网站的速度,特别是国外的网站,还有就是代理可以突破网络限制,安全的访问一些本来无法访问的网站。那么,Win7系统下要如何使用代理服务器上网呢...

    2023-06-13 PC教程
    0220
  • 小编分享如何使用wps表格制作双轴坐标图

    如何使用wps表格制作双轴坐标图?wps表格是一个办公软件,相信很多小伙伴都使用过。想要使用wps表格制作双轴坐标图,具体该怎么制作?下面就是使用wps表格制作双轴坐标图的方法,一...

    2023-06-28 PC教程
    0180
  • 小编分享如何使用MediaCreationToolW11创建安装介质。

    如何使用MediaCreationToolW11创建安装介质?Win11是微软新推出的一个系统,用户还不熟悉其操作、功能,那针对这个问题,下面小编就给大家解答一下MediaCrea...

    2023-06-12 PC教程
    0160
  • 小编教你如何使用Axure制作出文字超链接

    如何使用Axure制作出文字超链接?Axure 是一个专业的快速原型设计工具。想要使用Axure制作出文字超链接,但是不知道具体怎么制作。下面就是使用Axure制作出文字超链接的教...

    2023-06-27
    0200
  • 小编分享如何使用premiere增加图片色彩度

    如何使用premiere增加图片色彩度?premiere是一款比较专业的视频编辑软件,它的调色功能非常好用,今天我们就以一张图片素材为例,来讲讲premiere调色功能的使用方法。...

    2023-06-27 PC教程
    0180
  • 分享如何使用支付宝停车服务

    如何使用支付宝停车服务?支付宝是一个网上支付平台,里面有很多便民的功能可供用户使用,停车服务就是其中的一个。很多用户都不知道支付宝停车服务怎么用,下面就是支付宝停车服务使用教程,一...

    2023-06-26
    0200
  • 我来分享Word文档如何使用求和功能。

    Word是我们工作中经常使用的办公软件,有时候在Word文档中有很多数值、数据,需要我们进行求和、汇总,不过有些小伙伴并不知道Word中有求和功能,用着计算机算,那工作效率不能直视...

    2023-06-17 PC教程
    0180
  • 我来教你如何使用微信老赖地图

    如何使用微信老赖地图?微信是一个网上通讯平台,用户可以使用其和好友进行交流互动。微信小程序相信很多用户都使用过,其中有一个老赖地图,非常好用,但是很多用户都不知道具体怎么使用。下面...

    2023-06-27
    0180
  • 分享腾讯地图如何使用杨幂语音导航。

    腾讯地图是一款非常不错的导航软件,功能丰富,给大家外出提供了便利。亲们或许都不知道腾讯地图如何使用杨幂语音导航,小编很高兴为大家解决这个问题,接下来就为大家奉上设置杨幂语音导航方法...

    2023-10-05 安卓教程
    08040
  • 我来教你护眼宝app如何使用

    护眼宝app如何使用?护眼宝app是一款护眼软件,这类软件的作用主要是对手机屏幕的蓝光进行调节,并降低手机亮度,调节更适合的颜色来保护眼睛。很多新用户还不知道具体怎么使用,下面就是...

    2023-06-27
    0130
  • 小编分享如何处理Excel中Vlookup函数遇到错误值

    Excel文档为我们提供了超多种类的函数供我们去进行查询计算,但是我们在使用函数的时候,不是每一次都能出现正确的数据。可能因为我们打错字,也可能因为其他问题,导致了我们的函数数值出...

    2023-07-08 PC教程
    0190
  • 分享如何使用乐秀APP给视频添加特效

    如何使用乐秀APP给视频添加特效?小伙伴们在制作了一个小视频,觉得效果欠佳,其实可以给他加点特效就好很多。下面, 小编就为大家介绍下使用乐秀APP给视频添加特效方法。 打开乐秀编辑...

    2023-06-24
    0170

发表回复

登录后才能评论