当前位置: 首页 > news >正文

assert()宏函数

assert()宏函数

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

#include <assert.h>
void assert( int expression );

assert的作用是先计算表达式expression, 如果其值为假(即为0),那么它会打印出来assert的内容和__FILE__, __LINE__, __ASSERT_FUNCTION,然后执行abort()函数使kernel杀掉自己并coredump(是否生成coredump文件,取决于系统 配置);否则,assert()无任何作用。

使用assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。所以release版本的不应该执行assert函数或者应该删除调这些语句,

删除很显然不显示, 那么怎么办呢?

因为宏NDEBUG有定义时,宏assert()的定义为空, 基于此在NDEBUG上找突破口

#ifdef NDEBUG 
#define assert(x) ((void)0) 
#else 

办法

  • 1、 在包含头文件时, 在代码层面增加宏NDEBUG定义

缺点:还是要动代码,在include的地方额外加一行

#include <stdio.h>
#define NDEBUG
#include <assert.h>
  • 2、 在makefile 、cmakelist上统一加

缺点: 在大型项目上,需要环境人员增加此宏定义 , 开发人员还得确认出盘后的环境是否真的有此宏定义了。

-DNDEBUG

注意

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

相关文章:

assert()宏函数

assert()宏函数 assert是宏&#xff0c;而不是函数。在C的assert.h文件中 #include <assert.h> void assert( int expression );assert的作用是先计算表达式expression&#xff0c; 如果其值为假&#xff08;即为0&#xff09;&#xff0c;那么它会打印出来assert的内容…...

Docker圣经:大白话说Docker底层原理,6W字实现Docker自由

说在前面&#xff1a; 现在拿到offer超级难&#xff0c;甚至连面试电话&#xff0c;一个都搞不到。 尼恩的技术社群&#xff08;50&#xff09;中&#xff0c;很多小伙伴凭借 “左手云原生右手大数据”的绝活&#xff0c;拿到了offer&#xff0c;并且是非常优质的offer&#…...

Redis+Caffeine多级(二级)缓存,让访问速度纵享丝滑

目录多级缓存的引入多级缓存的优势CaffeineRedis实现多级缓存V1.0版本V2.0版本V3.0版本多级缓存的引入 在高性能的服务架构设计中&#xff0c;缓存是一个不可或缺的环节。在实际的项目中&#xff0c;我们通常会将一些热点数据存储到Redis或MemCache这类缓存中间件中&#xff0…...

C#和.net框架之第一弹

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录C# 简介一、微软平台的编程二、使用VS创建第一个c#程序1、第一步2、第二步3、第三步4、第四步5、第五步C# 简介 C# 是一个现代的、通用的、面向对象的编程语言&…...

C++---背包模型---潜水员(每日一道算法2023.3.12)

注意事项&#xff1a; 本题是"动态规划—01背包"和"背包模型—二维费用的背包问题"的扩展题&#xff0c;优化思路不多赘述&#xff0c;dp思路会稍有不同&#xff0c;下面详细讲解。 题目&#xff1a; 潜水员为了潜水要使用特殊的装备。 他有一个带2种气体…...

C++类的成员变量和成员函数详解

类可以看做是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的集合。 类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存。但是,在定义类的时候不能对成员变量赋值,因为类只是一种数据类…...

(枚举)(模拟)(位运算)116. 飞行员兄弟

目录 题目链接 一些话 切入点 流程 套路 ac代码 题目链接 116. 飞行员兄弟 - AcWing题库 我草&#xff0c;又~在&#xff5e;水&#xff5e;字&#xff5e;数&#xff5e;啦&#xff01;我草&#xff0c;又~在&#xff5e;水&#xff5e;字&#xff5e;数&#xff5e;啦…...

详解Array.prototype.shift.call(arguments)

经常看到如下代码&#xff1a; function foo() {let k Array.prototype.shift.call(arguments);console.log(k) } foo(11,22) //11 Array.prototype.shift.call(arguments)的作用是&#xff1a; 取 arguments 中的第一个参数 一、为啥要这么写&#xff0c;不直接使用argume…...

Tina_Linux_Wi-Fi_开发指南

Tina Linux Wi-Fi 开发指南 1 前言 1.1 文档简介 介绍Allwinner 平台上Wi-Fi 驱动移植&#xff0c;介绍Tina Wi-Fi 管理框架&#xff0c;包括Station&#xff0c;Ap 以及Wi-Fi 常见问题。 1.2 目标读者 适用Tina 平台的广大客户和对Tina Wi-Fi 感兴趣的同事。 1.3 适用范…...

Spring AOP(AOP概念、组成、Spring AOP实现及实现原理)

文章目录1. Spring AOP 是什么2. 为什么要用 AOP3. 怎么学 Spring AOP4. AOP 组成5. Spring AOP 实现5.1 添加 Spring AOP 框架支持5.2 定义切面和切点5.3 实现通知方法5.4 使⽤ AOP 统计 UserController 每个⽅法的执⾏时间 StopWatch5.4 切点表达式说明 AspectJ6. Spring AOP…...

8.条件渲染指令

目录 1 v-if v-show 2 v-if v-else-if v-else 1 v-if v-show v-if与v-show都可以控制DOM的显示与隐藏 由于flag是布尔值&#xff0c;所以这里可以直接写 v-if"flag" 当flag为true的时候&#xff0c;v-if与v-show控制的div都会被显示出来 当flag为false的时候&a…...

2023年全网最全最细最流行的自动化测试工具有哪些?你都知道吗!

下面就是我个人整理的一些比较常用的自动化测试工具&#xff0c;并且还有视频版本的详细介绍&#xff0c;同时在线学习人数超过1000人&#xff01; B站讲的最详细的Python接口自动化测试实战教程全集&#xff08;实战最新版&#xff09;一&#xff1a;前言 随着测试工程师技能和…...

网络安全——数据链路层安全协议

作者简介&#xff1a;一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭&#xff1a;低头赶路&#xff0c;敬事如仪 个人主页&#xff1a;网络豆的主页​​​​​​ 目录 前言 一.数据链路层安全协议简介 1.数据链路安全性 二.局域网数据链路层协议 1.…...

编译原理基础概念

一、什么是编译程序编译程序是一种程序&#xff0c;能够将某一种高级语言编写的源程序改造成另一种低级语言编写的目标程序&#xff0c;他们在逻辑上等价、完成相同的工作二、编译阶段1、当目标程序是机器语言时&#xff0c;编译阶段&#xff1a;&#xff08;1&#xff09;编译…...

蔬菜视觉分拣机器人的设计与实现(RoboWork参赛方案)

蔬菜视觉分拣机器人的设计与实现 文章目录蔬菜视觉分拣机器人的设计与实现1. 技术栈背景2. 整体设计3. 机械结构3.1 整体结构3.2 底座结构3.3 小臂结构3.4 大臂结构3.5 负载组件结构3.6 末端执行器结构4. 硬件部分4.1 视觉系统4.1.1 光源4.1.2 海康工业相机4.2 传送带系统4.2.1…...

【LVGL移植】STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT ST7735S跑LVGL图形demo

【LVGL移植】STM32F1基于STM32CubeMX配置硬件SPI驱动1.8寸TFT ST7735S屏幕跑LVGL图形demo&#x1f3ac;运行LVGL 按键组件demo ✨基于STM32CubeMX配置工程是因为方便移植&#xff0c;只要是STM32芯片&#xff0c;拿到我的这个工程源码就可以根据自己的stm32芯片&#xff0c;自…...

写给20、21级学生的话

写给20、21级学生的话前言一、关于招聘变招生&#xff0c;你怎么看&#xff1f;二、对于即将实习/已经实习的学生&#xff0c;你有什么建议&#xff1f;1.学习方面2.提升方面三、思想成年真的很重要前言 最近&#xff0c;有一些同学遇到的实习问题&#xff0c;我统一回复下&…...

功能测试用例多次录制后,我丢掉了selenium,选择龙测AI-TestOps云平台

目录一、如何使用龙测AI-TestOps云平台1、进入龙测AI-TestOps云平台2、新建项目3、新建流程图4、创建任务5、查看任务状态6、查看报告、图片7、下载流程图、测试报告、excel用例二、龙测AI-TestOps云平台AI功能介绍1、NLP2、视频AI转流程图三、总结功能测试用例多次录制后&…...

【C++知识点】C++20 常用新特性总结

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;C/C知识点 &#x1f4e3;专栏定位&#xff1a;整理一下 C 相关的知识点&#xff0c;供大家学习参考~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;…...

数据库体系结构概念--集中式数据库、分布式数据库

数据库模式 前言&#xff1a; 平时我们接触的‘数据库’一般指的是DBMS&#xff0c;数据库管理系统&#xff0c;DBMS是软件如&#xff1a;mysql、oracle、dm等等都是集中式数据库&#xff0c;但它们不能代表整个数据库&#xff0c;只是通过这些软件来管理相应的数据内容&#…...

3分钟掌握终极免费网盘下载方案:告别限速的油猴脚本完全指南

3分钟掌握终极免费网盘下载方案&#xff1a;告别限速的油猴脚本完全指南 【免费下载链接】baiduyun 油猴脚本 - 一个免费开源的网盘下载助手 项目地址: https://gitcode.com/gh_mirrors/ba/baiduyun 还在为网盘下载速度发愁吗&#xff1f;今天我要分享一款改变游戏规则的…...

链式队列:高效实现O(1)入队出队

引言在之前的文章中&#xff0c;我们系统学习了栈结构&#xff08;顺序栈和链栈&#xff09;。栈是"后进先出"&#xff08;LIFO&#xff09;的结构&#xff0c;而今天要讲解的队列&#xff08;Queue&#xff09;则是"先进先出"&#xff08;FIFO&#xff0c…...

Win11系统下Anaconda3-2022.10保姆级安装与避坑指南(附不勾选PATH的详细原因)

Win11系统下Anaconda3-2022.10深度安装指南与关键配置解析 在数据科学和机器学习领域&#xff0c;Anaconda已经成为Python环境管理的标准工具之一。对于Windows 11用户来说&#xff0c;正确安装和配置Anaconda是开启数据分析之旅的第一步。本文将深入探讨Anaconda3-2022.10版本…...

YOLO11涨点优化:数据增强 | 引入AutoAugment自动化搜索增强策略,告别手工调参,挖掘最优数据配方

引言:YOLO11训练,为何你的mAP总是差一口气? 训练一个YOLO11模型并不难——几行Python代码就能跑起来。但真正让人崩溃的是:数据标注花了两周,超参数调了三天,mAP就涨了0.3个点。你反复调整旋转角度、翻转概率、HSV色彩偏移的幅度,试图找到那组“最佳”的组合,却发现自…...

Shannon 没有想到的事——当信息论遇上有限算力

从一个日常经验开始你有没有过这种体验——打开一本教科书&#xff0c;前三页还能跟上&#xff0c;到第四页突然看不懂了。每个字你都认识&#xff0c;但连在一起就变成了噪音。你翻回去重读&#xff0c;还是不行。于是你合上书&#xff0c;换了一本"入门版"&#xf…...

智能体开发实战:从LLM工具调用到自主决策系统的架构指南

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为DaMaxime/openclaw-agents-docs的项目引起了我的注意。乍一看&#xff0c;这像是一个围绕“OpenClaw Agents”的文档仓库&#xff0c;但当你深入进去&#xff0c;会发现它远不止是简单的API手册或使用说明。这个项目…...

GraphAgent:大语言模型与图数据融合的智能体框架解析与实践

1. 项目概述&#xff1a;当大语言模型遇上图数据最近在折腾一些涉及复杂关系数据的项目&#xff0c;比如学术文献网络、社交关系分析&#xff0c;甚至是企业内部的知识库梳理。这些场景里&#xff0c;数据不只是孤立的文本或数字&#xff0c;它们之间充满了各种显式的连接&…...

# 软考软件设计师每日精练 | 2026-04-25

&#x1f4dd; 软考软件设计师每日精练 | 2026-04-25&#x1f4c5; 距离2026年5月23日软考还有 28天&#xff01; 今日重点&#xff1a;算法策略辨析 线性规划 知识产权深化 项目管理工具&#x1f3af; 模块一&#xff1a;算法策略辨析&#xff08;必考 ★★★★★&#xff…...

智能体的核心能力到底是什么?看完彻底刷新认知

文章目录前言一、智能体的本质&#xff1a;从“回答问题”到“解决问题”的范式跃迁二、智能体的四大核心能力&#xff0c;少一个都是伪智能体2.1 自主规划能力&#xff1a;把复杂目标拆成可执行步骤2.2 工具调用与编排能力&#xff1a;按需组合工具&#xff0c;而不是只会调用…...

使用taotoken后c语言项目调用大模型的延迟与稳定性实际体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 使用taotoken后c语言项目调用大模型的延迟与稳定性实际体验 在开发一个需要集成大模型能力的C语言桌面应用时&#xff0c;我们面临…...