6s在c语言中的用法,C语言中assert的用法讲解

assert是指编写代码时做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作是异常处理的一种高级形式。下面是小编为大家整理的C语言assert的用法讲解,欢迎参考~

qr.oh100

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

#include

void assert( int expression );

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

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

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

复制代码 代码如下:

#include

#include

#include

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;

}

宏名: assert

功 能: 测试一个条件并可能使程序终止

用 法: void assert(int test);

程序例:

复制代码 代码如下:

#include

#include

#include

struct ITEM {

int key;

int value;

};

/* add item to list, make sure list is not null */

void additem(struct ITEM *itemptr) {

assert(itemptr != NULL);

/* add item to list */

}

int main(void)

{

additem(NULL);

return 0;

}

assert() 宏用法

注意:assert是宏,而不是函数。在C的assert.h头文件中。

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

复制代码 代码如下:

#include

void assert( int expression );

assert的作用是先计算表达式expression,如果其值为假(即为0),那么它先向标准错误流stderr打印一条出错信息,然后通过调用abort来终止程序运行;否则,assert()无任何作用。宏assert()一般用于确认程序的正常操作,其中表达式构造无错时才为真值。完成调试后,不必从源代码中删除assert()语句,因为宏NDEBUG有定义时,宏assert()的定义为空。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/528649.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cmd c语言 图形,CMD-C彩图隐写方案

1.前言本文提出了当前经典的彩图隐写方案,它具有聚类修改方向的特点,是第一个公认的彩色图隐写方案,为后续彩图隐写术和隐写分析工作提供了清晰的思路,具有深远的意义。2.背景现代灰度图像隐写方案是在最小化失真函数框架下设计的…

android 闪存软件测试,手机为什么这么卡:闪存I/O测试AndroBench

手机为什么这么卡:闪存I/O测试AndroBench软件名称:Androbench软件版本:4.0.1软件大小:1.01MB软件授权:免费适用平台:Android很多朋友买手机只是为了日常使用,卡顿是最影响日常使用的心情的问题了…

android 文件并发读写,Android下,rxJava+retrofit 并发上传文件和串行上传文件的效率为什么差不多?...

有个功能需要同时上传N个文件。代码如下:ApiService as ApiManager.getApiService();final ExecutorService es Executors.newFixedThreadPool(9);final int count Bimp.tempSelectBitmap.size();final CountDownLatch finishedLatch new CountDownLatch(count)…

android长按home键关闭程序,应用程序退出后Dialog弹出

FreeMusic新增功能1.按住Home键,back键,或recent键 弹出提示框难点:1.当应用程序退出的时候,dialog 依赖所在Activity的context,而应用程序退出的时候 Activity销毁,所以context随之销毁解决方案&#xff1…

android下挂串口中断,请大神看看为啥串口中断无法打断定时器中断

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#includesbit RSP2^6;sbit RWP2^5;sbit LCDNP2^7;sbit xiangP1^5;sbit ledP2^1;#define GPIO P0#define uchar unsigned char#define uint unsigned intunsigned char date1,aa,ee,k,flag;unsigned char code table[]"time ov…

android手机浏览器研究报告,QQ浏览器Android客户端产品体验报告

概览手机:魅族MX3操作系统:Flyme OS 3.5.2(A19220)体验产品:QQ浏览器Android客户端软件版本:5.7.2.1400需求分析目标人群:所有移动互联网网民使用场景:用户使用手机上网浏览网页、看小说、看视频、购物&…

android 音乐 数据库,android从数据库中取音乐数据

android从手机数据库中取音乐数据直接贴代码public void getMp3(){list new ArrayList<>();Cursor mAudioCursor this.getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,null,// 字段 没有字段 就是查询全部信息 相当于SQL语句中的 “ * ”…

labview利用簇模拟汽车控制_在LabVIEW应用程序中何时应采用面向对象技术 (翻译)...

在LabVIEW应用程序中何时应采用面向对象技术 (翻译)在LabVIEW中应用面向对象编程技术并不是一件特别容易的事情&#xff0c;尤其是先期的学习成本很高&#xff0c;但是在开发大型、复杂的、长期维护的程序时&#xff0c;使用面向对象技术会带来较好的回报。自从LabVIEW8.2版本引…

华gt2升级鸿蒙,华为手表GT2 Pro已开始内部测试,升级鸿蒙操作系统

据悉&#xff0c;华为鸿蒙应用已经开始在手表上布局。根据鸿蒙OS分布式计算的特点&#xff0c;它最终可以实现手机计算、手表优化显示、功能扩展和续航的需求。而华为WATCH GT2 Pro将成为华为首款支持鸿蒙应用的手表产品&#xff0c;不过要等到10月30日之后我们才能够购买到。在…

flutter 如何判断在哪个页面_Agora 教程:构建你的第一个 Flutter 视频通话应用

作者&#xff1a;张乾泽&#xff0c;声网Agora 工程师我们基于 Agora SDK 封装了 Agora Flutter SDK &#xff0c;开发者可以在 Flutter 应用中快速实现稳定、可靠的实时音视频通话、互动直播应用。本文将介绍如何使用 Agora Flutter SDK 快速构建一个简单的移动跨平台视频通话…

华为鸿蒙汽车自动驾驶,华为鸿蒙车机OS现身,自动驾驶再进化(一)

在2019年的上海车展上&#xff0c;华为首次公开宣布进入汽车领域。时隔一年多&#xff0c;在2020北京车展上我们将再次看到华为的身影。这一次&#xff0c;人们的疑问不再是“华为要干嘛”&#xff0c;而是变成了“华为干得怎么样了”。华为也用丰硕的成果给出了答案&#xff1…

.net core高并发_高并发下的Node.js与负载均衡

阅读本文约需要6分钟大家好&#xff0c;我是你们的导师&#xff0c;我每天都会在这里给大家分享一些干货内容(当然了&#xff0c;周末也要允许老师休息一下哈)。上次老师跟大家分享了下浅谈前端自动化构建的相关知识&#xff0c;今天跟大家分享浅谈前端自动化构建的相关知识参考…

android arm 寄存器,ARM汇编

8种机械键盘轴体对比本人程序员&#xff0c;要买一个写代码的键盘&#xff0c;请问红轴和茶轴怎么选&#xff1f;Android Native 进程启动流程ARM传参&#xff0c;R0-R3传递前四个参数1. Thumb 指令集特点Thumb 指令集指令长度&#xff1a;16或32&#xff0c;16为为主Thumb-16 …

如何制作印章_用Word也能做出逼真的电子印章!简单3步!1分钟搞定

我们在办公的时候经常需要用到印章&#xff0c;以前可能是在纸上盖章&#xff0c;现在电子文档比较多&#xff0c;电子印章也开始流行使用&#xff0c;那么我们如何制作一个逼真的印章呢&#xff1f;很简单&#xff0c;用Word就可以搞定啦&#xff01;一、印章制作1、圆圈制作首…

鸿蒙唯独没有手机,想用鸿蒙OS,却没有华为手机?华为高层:还有1亿台设备可体验...

不再是PTT系统&#xff01;鸿蒙OS真的要来了&#xff0c;年内初步实现全场景交互从2019年开始&#xff0c;有关 鸿蒙OS 的消息越来越多&#xff0c;不仅公布了发展规划&#xff0c;也确定将适配多款机型&#xff0c;期待度直接拉满。可惜以目前的情况来看&#xff0c;鸿蒙OS 适…

@kafkalistener中id的作用_SSM框架(十一):Spring框架中的IoC(1)

控制反转 IOC&#xff1a;控制反转&#xff08;Inversion of Control&#xff0c;缩写为IoC&#xff09;&#xff0c;是面向对象编程中的一种设计原则&#xff0c;可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入&#xff08;Dependency Injection&#xff…

doxygen生成html文件,doxygen 的安装、配置、编译及使用(从源代码到文档)

doxygen 的安装、配置、编译及使用(从源代码到文档)1. 什么是 doxygen下面是 doxygen 主页上的一段说明文字Source code documentation generator toolDoxygen is a documentation system for C,C, Java, Objective-C, Python, IDL (Corba and Microsoft flavors),Fortran, VHD…

keras优化算法_目标检测算法 - CenterNet - 代码分析

代码出处吃水不忘打井人&#xff0c;分析github上的基于keras的实现&#xff1a;xuannianz/keras-CenterNet​github.com代码主体结构模型训练的主函数流程如下所示&#xff0c;该流程也是使用keras的较为标准的流程。其中代码篇幅较大的是数据准备的部分&#xff0c;通常的代码…

html checkbox 禁用,js禁用checkbox

两种禁用checkbox的方法&#xff1a;代码示例:-//W3C//DTD HTML 4.01 Transitional//EN” “http://www.w3.org/TR/html4/loose.dtd”>function x(){// document.all.cb1.disabled true;// 方法一document.getElementsByName(“cb1”)[0].disabled true;//方法二}JavaScri…

html5 拍照 清晰度,html5强大的功能(一)

html5强大的功能(一)发布时间&#xff1a;2020-03-26 16:03html5得出现被传的神乎其神的&#xff0c;做前端的总是要跟随着潮流发展&#xff0c;不过在跟风之前还是想要了解一下html5真正的魅力所在。html5创建的目的是以一种标准和直观的UI标记语言来把web设计和开发变得容易起…