C语言 函数——断言与防御式编程

news2025/2/27 5:32:05

目录

如何确定假设的真假?

断言

防御式编程(Defensive programming)


如何确定假设的真假?

程序中的假设

*某个特定点的某个表达式的值一定为真

*某个特定点的某个表达式的值一定位于某个区间等

问题:如何确定这些假设的真假呢?

断言(Assert)

*测试程序中假设的正确性

*如果假设被违反,则中断程序的执行

断言

在<assert.h>中定义的宏

void assert(int expression);

expression为真,无声无息

expression为假,中断程序

问题:使用条件语句代替断言,可不可以?

*使用断言便于调试程序时发现错误,不会影响程序执行效率

Debug版本

用于内部调试  ——assert是仅在Debug版本中起作用

Release版本

发行给用户使用  ——编译器会跳过assert不生成检查代码

仅用于调试程序不能作为程序的功能

何时适合使用断言呢?

*检查程序中的各种假设的正确性

*证实或测试某种不可能发生的状况确实不会发生

使用断言的基本原则

*使用断言捕获不应该或者不可能发生的情况

*每个assert只检验一个条件

防御式编程(Defensive programming)

让你编写的代码具有防弹功能

养成良好的编码风格

避免闪电式编程,用怀疑的眼光审视所有的输入和结果

*if anything can go wrong,it will——Murphy's Law

简单就是一种美,不要滥用技巧,让你的代码过于复杂

编译时打开所有警告开关,不要忽略它们

使用安全的数据结构和函数调用

做内存的“好管家”

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

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

相关文章

K8s拉取habor镜像

目录 在daemon.json中添加仓库地址 重新加载daemon.json并重启docker 在目标node节点添加域名 验证目标node是否能正常登录镜像仓库 创建pod资源 加载yml文件 验证 查看pod的ip与端口号 在daemon.json中添加仓库地址 此处需要在创建资源对象所在的节点进行添加 路径&a…

AcWing 1027. 方格取数

解题思路 如果使用了先走和后走的方式&#xff0c;这种方式利用了贪心的思想&#xff0c;会产生局部最优解&#xff0c; 但局部最优解毕竟不是全局最优解。所以要采用同时走的方式。 相关代码 import java.util.Scanner;public class Main {static int w[][] new int[15][15]…

建筑设计全过程碳排放计算与案例分析

“30/60双碳目标”已成为我国绿色发展的新国策&#xff0c;建筑业对碳排放量化分析和减排也越来越重视。特别是全文强制性国标标准《建筑节能与可再生能源利用通用规范》GB55015-2021的实施&#xff0c;对建设项目可行性研究报告、建设方案和初步设计要求进行建筑碳排放分析&am…

不可错过的3D建模素材网站,让设计更加丰富多彩!

3D建模已经渗透到了各个行业和领域&#xff0c;从游戏设计、室内设计到建筑设计&#xff0c;3D模型的使用越来越广泛。然而&#xff0c;创建出优秀的3D模型就需要大量的优质3D建模素材。幸运的是&#xff0c;有一些网站提供了大量的高质量3D建模素材&#xff0c;这些都是我们设…

又踩坑了!BigDecimal使用的5个坑!

前言 在日常开发中&#xff0c;BigDecimal类被广泛用于精确的数值、金额的计算。但是在使用BigDecimal的过程中&#xff0c;存在以下这几个坑&#xff0c;大家要注意一下哈~~ 1.浮点数初始化的坑 反例: BigDecimal problematic new BigDecimal(0.1); System.out.println(&…

Microsoft Office LTSC 2021企业办公新标杆,稳定高效助力业务发展

Microsoft Office LTSC 2021包含Word、Excel、PowerPoint等常用组件&#xff0c;支持实时共享和智能转换功能&#xff0c;允许多个用户同时编辑文档&#xff0c;提高了团队协作效率。还加强了安全性和隐私保护&#xff0c;通过加密协议和安全验证等方法&#xff0c;有效防止了恶…

Fiddler的安装和使用——PC端移动端抓包

Fiddler的安装和使用——PC端&移动端抓包 前言使用fiddler的原因 安装方法安装Fiddler :双击下载的fiddlerSetup.exe,弹出如下界面&#xff0c;点击I Agree 使用方法——PC端抓包配置&#xff1a;打开Fiddler文件夹&#xff0c;点击Fiddler.exe运行fiddler进行配置抓取HTTP…

CSS-文字环绕浮动、行内块分页、三角强化妙用、伪元素选择器

文字环绕浮动 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>文字环绕浮动效果</title><s…

解决unbuntu更新到23.10 mantic firefox无法使用的问题

产看历史版本号&#xff1a; 升级到最新版本后查看&#xff1a; roottesthost01:/home/test/Desktop# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 23.10 Release: 23.10 Codename: mantic 打开firefox发现图标找…

OV证书为什么更可信

在网络安全领域&#xff0c;SSL/TLS证书扮演着至关重要的角色&#xff0c;其中组织验证&#xff08;Organization Validation&#xff0c;简称OV&#xff09;证书以其深度验证机制和高度可信性脱颖而出。 OV证书为何更值得信赖&#xff0c;关键在于其严格的验证流程。 首先&am…

2. Spring的创建和Bean的存取

经过前面的学习我们已经大体明白了 IOC 思想以及它的实现方式 DI &#xff0c;本节要讲的是如何Spring框架实现实现DI。 本节目标&#xff1a; Spring(Core) 项目创建将对象存储到 Spring 中将对象(bean)从 Spring 中取出 1. 创建 Spring 项目 与开篇演示的 Spring Boot 项目不…

个人成长秘籍:参加六西格玛绿带培训的好处

在当今竞争激烈的商业环境中&#xff0c;追求卓越与持续改进已成为企业和个人成功的关键。六西格玛绿带培训&#xff0c;作为一种全面提升管理技能和工作效率的培训课程&#xff0c;不仅帮助企业优化流程、提高质量和效率&#xff0c;也为个人职业发展开辟了一条光明大道。张驰…

电脑怎么下载微信小程序的视频

电脑怎么下载微信小程序中的视频资源&#xff0c;本篇文章就教大家如何下载微信小程序的视频资源的方法&#xff0c;这里要借助一个工具:下载高手 下载高手链接&#xff1a;https://pan.baidu.com/s/1qJ81sNBzzzU0w6DWf-9Nxw?pwdl09r 提取码&#xff1a;l09r --来自百度网盘…

Web后端搭建

目录 一 搭建服务器端 1.1安装服务器软件 1.2检查环境是否配置 1.3安装Tomcat 二 创建并发Web项目 2.1创建一个java项目 三 创建Servlet 前端程序如何才能访问到后端程序呢&#xff0c;这时候我们就需要web服务器来解决&#xff1a;将后端程序部署到服务器中&#xff0c…

常见的 Android app 测试面试题

一、开场问题&#xff1a;&#xff08;自由发挥&#xff09; 1、请自我介绍一下&#xff1b; 2、为什么离开上一个公司呢&#xff1f; 3、做测试多久了&#xff1f;以前做过哪些项目&#xff1f;你们以前测试的流程是怎样的&#xff1f;用过哪些测试工具&#xff1f; 4、你觉得…

【攻防利器】Dirsearch 扫描工具

Dirsearch工具引言&#xff1a; Dirsearch是一个用Python编写的开源工具&#xff0c;用于在目标网站上执行基于字典的目录/文件枚举。它可以帮助渗透测试人员和安全研究人员识别目标网站上可能存在但未公开的目录或文件&#xff0c;从而发现潜在的安全风险。 Dirsearch下载地址…

day02 VS Code开发单片机

VS Code开发单片机 1.1 安装 MinGW-w64 1)MinGW-w64介绍 VS Code 用于编辑 C 代码,我们还需要 C 编译器来运行 C 代码,所以安装 VS Code之前我们需要先安装 C 编译器。这里我们使用 MinGW-w64(Minimalist GNU for Windows 64-bit)。 MinGW-w64 是一个用于Windows操作系…

关于IP定位功能问题

前言 近期&#xff0c;微信、抖音、微博、公众号等平台&#xff0c;统统上线用户 IP 属地功能&#xff0c;简单的说&#xff0c;就是在互联网发文、发言时&#xff0c;都会带上自己的地址信息。举个栗子&#xff0c;在公众号发文、在公众号留言&#xff0c;都会带上地址。 IP …

域控软件安全隔离关键技术剖析:MCU域 VS SOC域

安全隔离的需求 功能安全开发中&#xff0c;软件阶段由软件V模型左边的软件安全需求SSR开始。SSR是从技术安全需求TSR中提取出软件的功能安全需求&#xff0c;大多数情况下具有不同的ASIL等级。 图1 功能安全软件开发V模型 随后&#xff0c;软件安全需求会被分配到软件架构中的…

我国量子信息科技创新发展面临的挑战及建议——基于中美对比视角的分析

2024年2月&#xff0c;中国科学技术发展战略院慕慧娟博士、丁明磊研究员及光子盒顾成建一起在《科技管理研究》上发表文章——《我国量子信息科技创新发展面临的挑战及建议&#xff1a;基于中美对比视角的分析》。 在此&#xff0c;我们整理并发布这篇文章&#xff0c;欢迎感兴…