商城网站设计服务删除中文wordpress

web/2025/9/28 1:57:07/文章来源:
商城网站设计服务,删除中文wordpress,百度站长工具后台,免费的网站管理系统宏打印函数 在我们的嵌入式开发中#xff0c;使用printf打印一些信息是一种常用的调试手段。但是#xff0c;在打印的信息量比较多的时候#xff0c;就比较难知道哪些信息在哪个函数里进行打印。特别是对于异常情况的打印#xff0c;我们需要快速定位到异常情况的位置。这时… 宏打印函数 在我们的嵌入式开发中使用printf打印一些信息是一种常用的调试手段。但是在打印的信息量比较多的时候就比较难知道哪些信息在哪个函数里进行打印。特别是对于异常情况的打印我们需要快速定位到异常情况的位置。这时候我们可以使用宏定义来封装一个宏打印函数这个宏打印函数可以显示打印信息所在的文件、行数、函数名等信息。如左右滑动查看全部代码#define DBG_PRINTF(fmt, args...)  \ {\printf(File:%s  Line:%d  Function:%s , __FILE__, __LINE__, __FUNCTION__);\printf(fmt, ##args);\ } 使用范例可见使用方法与printf的使用方法一样而且每条打印语句开头都会打印调试信息所在的文件名、行号、函数名信息方便我们查找一些调试信息。其中__FILE__、__LINE__、__FUNCTION__这三个宏是编译器内置宏定义分别代表调试信息所在文件、行号、函数。除此之外常用的宏还有__DATE__、__TIME__分别代表当前的编译日期与时间。如DBG_PRINTF(Compile Time: %s %s\n, __DATE__, __TIME__); 第二条printf中的##符号是为了处理args不代表任何参数的情况。如DBG_PRINTF(Hello world); 当不加##符号是以上宏的第二条语句被拓展为printf(Hello world\n, ); 可见多出了一个逗号这个逗号是多余的。加上##符号后以上宏的第二条语句被拓展为printf(Hello world\n); 这才是我们想要的结果。其实这些结果我们通过查看预处理文件可以清晰的知道最后需要注意的是这个DBG_PRINTF还是与printf不一样的。DBG_PRINTF宏是两条语句的组合无返回值而printf的原型是int printf (const char *__format, ...) 但是我们一般都很少使用printf的返回值所以DBG_PRINTF的用法与printf函数基本一致。打印调试宏开关 通常情况下一些打印调试信息只是在我们调试阶段需要的在程序发布阶段是不需要的。所以为了避免打印调试信息带来的资源开销我们可以把这些打印调试语句给注释掉。一种方法是逐句进行注释这是一种比较低效的方法。比较高效的方法就是添加调试宏开关利用条件编译来选择打印/不打印调试信息。比如我们可以把上面的代码改造为#define  DEBUG   1  #if DEBUG#define DBG_PRINTF(fmt, args...)  \{\printf(File:%s  Line:%d  Function:%s , __FILE__, __LINE__, __FUNCTION__);\printf(fmt, ##args);\} #else#define DBG_PRINTF(fmt, args...)    #endif 根据DEBUG宏的值来选择对应的打印宏函数。当DEBUG的值为1时启动相关的打印调试语句DEBUG的值为0时则关闭打印调试语句。这样我们就可以很方便的通过设置DEBUG宏的值来启动与关闭我们整个工程的DBG_PRINTF打印调试信息。do{}while(0) 其实上面我们封装的打印宏DBG_PRINTF还有一点缺陷比如我们与if、else使用的时候会有这样的一种使用情况此时会报语法错误。为什么呢同样的我们可以先来看一下我们的demo代码预处理过后相应的宏代码会被转换为什么。如这里我们可以看到我们的if、else结构代码被替换为如下形式if(c) { /* ....... */ }; else { /* ....... */ }; 显然出现了语法错误。if之后的大括号之后不能加分号这里的分号其实可以看做一条空语句这个空语句会把if与else给分隔开来导致else不能正确匹配到if导致语法错误。为了解决这个问题有几种方法。第一种方法是把分号去掉。代码变成第二种方法是在if之后使用DBG_PRINTF打印调试时总是加{}。代码变成以上两种方法都可以正常编译、运行了。但是我们C语言中每条语句往往以分号结尾并且总有些人习惯在if判断之后只有一条语句的情况下不加大括号而且我们创建的DBG_PRINTF宏函数的目的就是为了对标printf函数printf函数的使用加分号在任何地方的使用都是没有问题的。基于这几个原因我们有必要再对我们的DBG_PRINTF宏函数进行一个改造。下面引入do{}while(0)来对我们的DBG_PRINTF进行一个简单的改造。改造后的DBG_PRINTF宏函数如下#define DBG_PRINTF(fmt, args...) \ do\ {\printf(File:%s Line:%d Function:%s , __FILE__, __LINE__, __FUNCTION__);\printf(fmt, ##args);\ }while(0) 这里的do...while循环的循环体只执行一次与不加循环是效果一样。并且可以避免了上面的问题。预处理文件我们的宏函数实体中while(0)后面不加分号在实际调用时补上分号既符合了C语言语句分号结尾的习惯也符合了do...while的语法规则。使用do{}while(0)来封装宏函数可能会让很多初学者看着不习惯但必须承认的是这确确实实是一种很常用的方法。在STM32的HAL库中搜索while(0)在Linux源码中搜索while(0)可见在实际应用中do{}while(0)用的很多。#运算符与##运算符 这两个运算符之前也有分享过这里顺便也提一下。#号作为一个预处理运算符可以把记号转换成字符串。例如如果A是一个宏形参那么#A就是转换为字符串A的形参名。这个过程称为字符串化stringizing。以下程序演示这个过程##运算符可以把两个记号组合成一个记号。以下程序演示这个过程这个运算符用得很多。如最后以上就是本次的分享。如有错误欢迎指出谢谢本篇笔记会同步至我的个人博客https://www.lizhengnian.cn/中欢迎来访。原创不易期待您的在看、分享~  PS想加入技术群的同学加了我好友后就给我发「篮球的大肚子」这句话有可能机器人打瞌睡可以多发几次不要发与技术无关的消息或者推广。如果想获取学习资料就在公众号后台回复「1024」足够多的学习资料可以让你学习。

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

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

相关文章

怎么找网站模板网站模糊背景

哈喽~我是电商月月 要说做抖音小店最主要的是什么?那当然是找品了 那出单最快的方法是什么?无疑是达人带货了! 但新手店铺没销量,没体验分,没好评怎么能让达人同意帮我们带货呢? 方法其实很简单&#x…

网站 logfiles网络专业有哪些

通过前面几个课时的学习,相信你对 JVM 的理论及实践等相关知识有了一个大体的印象。而本课时将重点讲解 JVM 的排查与优化,这样就会对 JVM 的知识点有一个完整的认识,从而可以更好地应用于实际工作或者面试了。 我们本课时的面试题是&#x…

泰州做网站哪家好横泉水库建设管理局网站

1 前言 在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生成注释。带来的问题…

商城网站的psd模板免费下载泛站群

点击下载《产品经理的进阶之路》 1. 前言 本文深入剖析了产品经理这一职业从产品专员起步,逐步晋升为产品经理、高级产品经理,直至产品总监的整个职业发展路径。在每个阶段,产品经理都需承担不同的工作职责,展现出独特的职业特点。 2. 产品专员 关键词【产品需求/原型/文…

广州led网站建设嘉兴建网站

azure微软office365邮箱会对频繁连接自身邮箱服务器的IP地址进行,连接邮箱服务器IP限制,也就是黑名单,释放时间不确定,但至少一天及以上。 解决办法,换一个IP,或者新注册一个office365邮箱再重试。 以下是…

建设工程合同通用条款范本2017seo是什么字

1.Redis,MongoDB,Elasticsearch实现地理位置查询比较 1.1 Redis: 优点:Redis提供了地理空间索引功能,可以通过Geo数据类型进行地理位置查询。这使得Redis在处理地理位置查询时非常高效。 缺点: Redis的地理空间索引功能相对简单&#xff0…

石家庄市建设南大街小学网站中国制造网官方网站下载安装

1-响应时间 响应时间指从用户或事务在客户端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这整个过程所消耗的时间 在性能测试实践中,为了使响应时间更具代表性,响应时间通常是指事务的平均响应时间ART 在实践中要…

公司网站发布流程上海新建公司

目录 四.Linux实用操作 12.环境变量 环境变量 环境变量--PATH $ 符号 自行设置环境变量 自定义环境变量PATH 总结 四.Linux实用操作 13.文件的上传和下载 上传,下载 rz,sz命令 四.Linux实用操作 14.压缩和解压 压缩格式 tar命令 tar命令压缩…

做网站广告费装饰网站案例

缘由 MongoDB数据库如下: 如上截图,使用MongoDB客户端工具DataGrip,在filter过滤框输入{ profiles.alias: 逆天子, profiles.channel: },即可实现昵称和渠道多个嵌套字段过滤查询。 现有业务需求:用Java代码来查询…

济南在线制作网站商丘做网站需要多少钱

准备工作1.安装scrapy_redis包,打开cmd工具,执行命令pip install scrapy_redis2.准备好一个没有BUG,没有报错的爬虫项目3.准备好redis主服务器还有跟程序相关的mysql数据库前提mysql数据库要打开允许远程连接,因为mysql安装后root用户默认只允许本地连接,详情请看此文章部署过程…

武侯区建设局门户网站制作网站的公司电话号码

目录 前言 知识储备 图像处理常用算法 算法原理 传统分割方法 1.基于阈值的分割方法

小型企业网站建设的背景清河网站建设公司

文章目录如何生成采购单系统生成采购单的流程基本流程扩展流程找不到符合条件的供应商,要求部分退款(初次生成采购单时)找不到符合条件的供应商,要求全部退款(初次生成采购单时)指定供应商的库存不足&#…

手机微信官方网站首页网页禁止访问怎么办

第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十一届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、字串排序2、门牌制作3、既约分数4、蛇形填数5、跑步锻炼6、七段码7、成绩统计8、回文日期9、子串分值和10、平面切分 1、字串排序 // 转载博客链接 https://blog.csdn.net/we…

店铺详情页设计模板龙斗seo博客

在线订餐系统mysql字段,随便写的了。也许要改变呢。再说吧啊。在线订餐系统mysql字段分成3个表开发1.user2.order3.pay1.用户表包含下面字段 id int 主键,自动累加,不为空,长度10就够了吧;用户名(name) varchar类型 30长度够了吧。…

p2p网站建设报价2p排名绵阳高新区建设局网站

简介 Pyenv 是一个 python 解释器管理工具,可以对计算机中的多个 python 版本进行管理和切换。为什么要用 pyenv 管理python呢,用过的 python 人都知道,python 虽然是易用而强大的编程语言,但是 python 解释器却有多个版本&#…

建筑公司网站广告宣传语高校网站建设近期情况说明

问题窥探之前有个哥们在使用Newtonsoft.Json反序列化的时候,发现明明有数据,但是就是序列化不出来数据到实体里面。咋一看,确实没什么问题啊,字符串的数据是存在的。那么问题出在哪里呢。解决思路1、我让他把字符串复制出来&#…

国外域名注册做违法网站新浪云上传wordpress

如果您使用Java进行编程的时间足够长,则有可能需要为业务用户生成报告。 就我而言,我已经看到几个项目使用JasperReports库来生成PDF和其他文件格式的报告。 最近,我荣幸地观察了Mike和他的团队使用上述报告库及其面临的挑战。 简而言之Jasp…

学校资源网站建设方案wordpress导入文件格式

0 算法简介 快速排序是一种高效率排序算法,它是对冒泡排序的一种改进,它也是一种不稳定排序算法。快速排序的核心是比较、交换和递归。 在待排序数组中指定一个基准元素pivot(一般选取数组首元素),使得数组排序之后基…

网站建设视频l网站开发主框架一般用什么布局

3.1考虑横风向振动的风荷载 图 3.1 流场中的横流截面 Fig 3.1 The lateral section in flow-field 结构沿高度Z方向作用在结构单位长度上的横风向荷载主要来自于升力,其次来自于阻力。高度z处单位长度上的风荷载 式中,为来流与结构的夹角,称…

南宁网站建设及推广招商网站如何做推广

nfs局域网共享网盘配置 服务器端(以ubuntu为例)第一步:安装 NFS 服务器第二步:创建共享目录第三步:配置 NFS 导出第四步:应用配置第五步:配置防火墙第六步:验证配置 客户端&#xff…