瑞策系统之家 - 最好的系统光盘下载网站!

当前位置:首页 > 系统教程 > Linux教程 > 详细页面

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

时间:2021-10-13 来源:瑞策系统之家--_Win10系统_Windows7旗舰版_最新GhostXP Sp3系统下载

只要能看懂程序的人都知道assert,并在Windows下用VC写,使用assert后,只要在IDE中设置为调试版或发布版,编译器就会自动忽略assert。但是,在Linux下,编译命令中必须添加-DNDEBUG,这样在系统编译时就不会编译assert。否则,程序在运行时可能会被assert中断。如何在linux中使用assert函数?我们来谈谈如何在linux下使用assert函数。

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

  步骤如下:

《assert.h》中定义了assert宏的原型。它的功能是在条件返回错误时终止程序执行。原型定义:

#包括《assert.h》

void assert(int表达式);

assert的功能是现在计算表达式。如果其值为false(即0),它将首先向stderr打印一条错误消息。

然后调用中止来终止程序。

请参见以下程序列表badptr.c:

#包括《stdio.h》

#包括《assert.h》

#包括《stdlib.h》

int main(空)

{

FILE * fp

fp=fopen("test.txt "," w ");//以可写方式打开文件,如果不存在,则创建同名文件。

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

fc lose(FP);

fp=fopen("noexitfile.txt "," r ");//以只读方式打开文件。如果它不存在,打开文件会失败。

assert(FP);//所以这里有一个错误。

fc lose(FP);//程序永远不会在这里执行。

返回0;

}

[root @ localhost error _ process]# gcc bad ptr . c

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

a.out: badptr.c:14: main:断言` fp '失败。

被抛弃了。

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

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

#包括《stdio.h》

#定义NDEBUG

#包括《assert.h》

使用总结和注意事项:

1)检查函数开始时传入参数的有效性。

例如:

int resetBufferSize(int nNewSize)

{

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

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

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

//说明:保持原有信息内容不变。NNEW大小"=0表示清除缓冲区。

assert(nNewSize )=0;

assert(nNewSize)《MAX=MAX _ BUFFER _ SIZE》;

}

2)每个断言只检查一个条件,因为同时检查多个条件时,如果断言失败,就无法直观判断哪个条件失败了。

错误:assert(noffset "=0 noffset nsize "=m _ ninformationsize);

good:assert(noffset "=0);

assert(nOffset nSize)《m=ninformationsize》;

3)不能使用改变环境的语句,因为assert只在DEBUG中生效。如果这样做,用户程序实际运行时会遇到问题。

错误:断言(I“100”)

这是因为如果出了问题,比如执行前i=100,那么语句就不会执行,然后命令I也不会执行。

真实:断言(i 《100》)。

我;

4)assert和下面的语句应该是空白的,以形成逻辑和视觉上的一致性。

5)在某些地方,assert不能代替条件过滤。

以上就是在linux系统下使用assert函数方法的全部内容。如果你不知道如何在linux下使用assert函数,请先看看上面的内容!读完之后,你就会知道如何使用assert函数了。感兴趣的用户可以来了解一下。

相关信息

  • Ubuntu系统安装软件教程

    相信不少用户都使用过Linux系统,其中有用户称Linux系统安装软件麻烦,同时软件也非常少。其实不然,如果使用Ubuntu发行版的Linux安装软件则会简单很多,同时支持的软件应用也很多...

    2021/10/13

  • 如何对Linux进行分区?什么是Linux分区命令?

    在Linux环境下分区我们需要使用到fdisk命令,是用fdisk命令前用户还需要挂载当前硬件,笔者就此收集了一些资料,若是用户可以用得上的可以收藏本页,具体Linux自动挂载硬盘与Linux...

    2021/10/12

系统教程栏目

栏目热门教程

人气教程排行

站长推荐

热门系统下载

公众号