C语言_断言函数assert
断言函数assert
我一直以为 assert 仅仅是个报错函数,事实上,它居然是个宏,并且作用并非"报错"。
在经过对其进行一定了解之后,对其作用及用法有了一定的了解,assert() 的用法像是一种"契约式编程",在我的理解中,其表达的意思就是,程序在我的假设条件下,能够正常良好的运作,其实就相当于一个 if 语句:
if(假设成立)
{
程序正常运行;
}
else
{
报错&&终止程序!(避免由程序运行引起更大的错误)
}
但是这样写的话,就会有无数个 if 语句,甚至会出现,一个 if 语句的括号从文件头到文件尾,并且大多数情况下,我们要进行验证的假设,只是属于偶然性事件,又或者我们仅仅想测试一下,一些最坏情况是否发生,所以这里有了 assert()。
assert 宏的原型定义在 assert.h 中,其作用是如果它的条件返回错误,则终止程序执行。
#include "assert.h"
void assert( int expression );
assert 的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向 stderr 打印一条出错信息,然后通过调用 abort 来终止程序运行。
使用 assert 的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。
C语言_断言函数assert相关推荐
- C语言学习笔记---断言函数assert()
在C语言库函数中提供了一个辅助调试程序的小型库,它是由assert()宏组成,接收一个整形表达式作为参数.如果表达式的值为假(非零),则assert()宏就在标准错误流(stderr)中写入一条错 ...
- C语言_钩子函数(回调函数)
目录 1.引言 2.变量指针 3.函数指针 4.钩子函数作用 5.钩子函数使用 6.带参数的钩子函数 7 stm32 CubeMx 定时器回调函数的实现 1.引言 钩子函数.回调函数.注册函数,挂钩子 ...
- C语言_宏函数_换行符
在写代码时,发现很多代码重复,为了缩减代码及利于代码维护,将重复的代码通过宏函数的方式进行定义. 简单地将重复代码拷贝出来,通过宏定义封装了一下:因为多行代码,通过换行符进行了规范.使用了宏函数之后发 ...
- matlab语言中的assert断言函数
1.MATLAB语言没有系统的断言函数,但有错误报告函数 error 和 warning.由于要求对参数的保护,需要对输入参数或处理过程中的一些状态进行判断,判断程序能否/是否需要继续执行.在matl ...
- 解决matlab 关于警告(warning)、错误(error)、异常(exception)与断言(assert)问题总结
在使用matlab中难免会遇到警告(warning).错误(error).异常(exception)与断言(assert)等问题,那如何解决呢??? 本文将从警告(warning).错误(error) ...
- php断言什么意思,一起学习PHP中断言函数的使用
一起学习PHP中断言函数的使用 原来一直以为断言相关的函数是 PHPUnit 这些单元测试组件提供的,在阅读手册后才发现,这个 assert() 断言函数是 PHP 本身就自带的一个函数.也就是说,我 ...
- 第十二章 C语言调试_assert断言函数
在我们的实际开发过程之中,常常会出现一些隐藏得很深的BUG,或者是一些概率性发生的BUG,通常这些BUG在我们调试的过程中不会出现很明显的问题,但是如果我们将其发布,在用户的各种运行环境下,这些程序可 ...
- c语言中assert函数,C++ 中assert断言函数的基本用法
在我们的实际开发过程之中,常常会出现一些隐藏得很深的BUG,或者是一些概率性发生的BUG,通常这些BUG在我们调试的过程中不会出现很明显的问题,但是如果我们将其发布,在用户的各种运行环境下,这些程序可 ...
- Python assert断言函数及用法
Python assert断言函数及用法 Python assert 语句,又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行:反之,Pyt ...
最新文章
- bootstrap的栅格布局与两列布局结合使用
- 日产ftt传感器是什么_日产将发布最牛自动驾驶:选最棒的陪驾,走最快的车道...
- python调用报表制作工具_使用Python轻松制作漂亮的表格
- 悖论:早期互联网项目,是否需要技术含量?
- nodejs 代替python_Python/NodeJS坑记
- (三)Clang/ LLVM编译流程简述
- php三级实例,三级联动实例
- 计算机通识/14:算法常识/算法常识-01
- C++对输入流输出流运算符的重载【案例】
- 如何监控impala的数据_impala数据库的函数
- 【java学习之路】(javaWeb【后端】篇)005.会话
- 13.C++ vector 操作
- Spark源码分析之一:Job提交运行总流程概述
- 人脉网中应该具备的10种人
- html怎么做出相框的效果,纯CSS实现的相框效果
- Python打包exe,以及解决闪退
- 135编辑器代码是html吗,不会代码,你也能做背景样式!!!
- 【专访】黄健宏:为什么真正的聪明人喜欢用笨方法?
- mysql主从延迟时间是多少_MySQL主从同步个般是多久的延迟?
- obs 推流编码在哪设置_直播软件OBS推流的设置方法
热门文章
- 对称加密算法AES - ECB模式
- 老师教我们用计算机画画就是彩虹,一年级上课文
- VLC-2.2.6命令行帮助文件
- 使用Python+selenium实例化Microsoft Edge或Chrome浏览器对象和常见的报错
- 深信服防火墙之安全评估与动态检测技术
- java json asc排序_按ASCII码给json对象排序
- RNA的化学修饰原理|Gal-PEG-siRNA|siRNA-S-S-DSPE|siRNA-s-s-PEG|cholesterol-siRNA
- JS逆向加密——B 站弹幕 protobuf 分析
- 百度网盘 网页版、pc版 都登陆不进去的解决方法
- 简介ResNet18并用其对CIFAR-10数据集进行分类