巧用 STM32CubeIDE 之编译警告

news2025/1/19 23:12:17

1. 前言

编译警告对于工程师们来说,是再常见不过的了。对于严谨的工程师们来说,任何warning 都是不可忽视的。

2. 巧妙使用 warning

在 STM32CubeIDE 中,我们可以通过主动 warning(甚至 error)的方式来通知工程师,使得一些容易遗漏的配置得到重视。

例如,在释放参考代码给客户时,希望客户注意到里面的项目名称和项目版本,那么我们可以在代码中,通过“#error ”来强调必须要修改的信息,通过“#warning”来备注需要注意的信息。具体代码如图 1:

图1.巧用 warning – 在代码中主动添加产生 warning 的代码
在这里插入图片描述
这样,当客户编译工程时,会出现 error 和 warning,见图 2,只有将“#error”和“#warning”两行分别注释掉,才可以分别消除这两项编译信息,以此达到警示客户的目的。

图2.巧用 warning – IDE 编译时会主动产生 warning
在这里插入图片描述

2.1. 主动屏蔽特定的 warning

在有些场景下,我们还可以在特定的代码或者文件作用域内,主动屏蔽特定的warning。

例如,工程中写了一个测试函数“void MyTestFunction(void)”,但是在工程中暂时没有被调用,直接编译会得到“Wunused-function”的 warning。

但是如果在代码中添加这样的语句:

#pragma GCC diagnostic ignored "-Wunused-function"
/*此区间内,如果出现函数仅申明,但是没有被调用时,编译不产生warning*/
void MyTestFunction(void)
{}
#pragma GCC diagnostic pop

因为我们配置了“-Wunused-function”,那么在编译时,即使 MyTestFunction 没有被调用,编译也不产生 warning。

我们还可以在 STM32CubeIDE 中,通过“Help”->“Information Center”->“Read STM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 编译器文档,从而发现更多的 warning 选项,根据需要主动屏蔽更多的 warning。见图 3 :

图3.GCC 的 warning 选项(部分节选)
在这里插入图片描述

3. 小结

事实上,在编译项目时,warning 和 error 同样重要,部分隐蔽的问题可能就和warning 相关。当我们对工程代码和编译器有了更深层次的了解后,可以巧妙的使用和屏蔽 warning,帮我们更好地管理项目。

参考文献

在这里插入图片描述

文档中所用到的工具及版本

STM32CubeIDE V1.8.0


本文档参考ST官方的《【应用笔记】LAT1254+巧用STM32CubeIDE之编译警告》文档。
参考下载地址:https://download.csdn.net/download/u014319604/89085981

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

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

相关文章

计算机网络-TCP基础、三次挥手、四次握手过程

TCP基础 定义:TCP是面向连接的、可靠的、基于字节流的传输层通信协议。这意味着在发送数据之前,TCP需要建立连接,并且它能确保数据的可靠传输。此外,TCP将数据视为无结构的连续字节流。面向连接:TCP只能一对一进行连接…

ES6中数组新增的扩展和方法

文章目录 一、扩展运算符的应用二、构造函数新增的方法Array.from()Array.of()三、实例对象新增的方法copyWithin()find()、findIndex()fill()entries(),keys(),values()includes()flat(),flatMap()四、数组的空位五、sort排序稳定性 参考文献…

响应式网站设计哪个类型比较适合你?

响应式网站设计哪个类型比较适合你?有很多人对于响应式网站还不太了解,其实这种网站就是以创建页面的图片排版大小,来根据浏览网站用户所使用网络设备,自动化适应这些设备。 不管是出于网站兼容性还是用户信息需求,它都…

RK3568测试

作者简介: 一个平凡而乐于分享的小比特,中南民族大学通信工程专业研究生在读,研究方向无线联邦学习 擅长领域:驱动开发,嵌入式软件开发,BSP开发 作者主页:一个平凡而乐于分享的小比特的个人主页…

深入浅出 -- 系统架构之微服务架构的新挑战

尽管微服务架构有着高度独立的软件模块、单一的业务职责、可灵活调整的技术栈等优势,但也不能忽略它所带来的弊端。本篇文章,我们从网络、性能、运维、组织架构和集成测试五个方面来聊一下设计微服务架构需要考虑哪些问题,对设计有哪些挑战呢…

使用 Apipost 管理项目接口文档

目录 前言 基本使用教程 注册账号 创建项目 创建接口 编辑接口 ​编辑 接口设计 生成文档 接口用例 前言 在 web 后端开发中,开发接口之前通常需要先写接口文档,然后前后端再根据接口文档开始开发系统模块。接口文档形式多种多样&#xff0c…

Aurora8b10b(1)IP核介绍并基于IP核进行设计

文章目录 前言一、IP核设置二、基于IP核进行设计2.1、设计框图2.2、aurora_8b10b_0模块2.3、aurora_8b10b_0_CLOCK_MODULE2.4、aurora_8b10b_0_SUPPORT_RESET_LOGIC2.5、aurora8b10b_channel模块2.6、IBUFDS_GTE2模块2.7、aurora_8b10b_0_gt_common_wrapper模块2.8、aurora8b10…

基于MPPT的风力机发电系统simulink建模与仿真

目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1风能与风力发电机模型 4.2风力机功率特性与最大功率点 4.3 MPPT 5.完整工程文件 1.课题概述 基于MPPT的风力机发电系统simulink建模与仿真。MPPT使用S函数编写实现。基于最大功率点跟踪&#xff08…

【OpenCV-颜色空间】

OpenCV-颜色空间 ■ RGB■ BGR■ HSV■ HSL■ HUE■ YUV ■ RGB ■ BGR BGR 就是RGB R和B调换位置。 OpenCV 默认使用BGR ■ HSV ■ HSL ■ HUE ■ YUV

免费搭建:雾锁王国Enshrouded游戏服务器,10秒完成!

免费自建雾锁王国Enshrouded服务器,先领取阿里云300元无门槛代金券,然后在雾锁王国Enshrouded专题页一键部署,不需要基础,鼠标点选即可10秒钟创建一台雾锁王国游戏服务器,超简单,阿里云服务器网aliyunfuwuq…

利用IP地址判断羊毛用户:IP数据云提供IP风险画像

在当今数字化社会,互联网已经成为人们日常生活和商业活动中不可或缺的一部分。然而,随着网络的普及,网络欺诈行为也日益猖獗,其中包括了羊毛党这一群体。羊毛党指的是利用各种手段获取利益、奖励或者优惠而频繁刷取优惠券、注册账…

leetcode热题100.跳跃游戏2

Problem: 45. 跳跃游戏 II 文章目录 题目思路复杂度Code 题目 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说,如果你在 nums[i] 处,你可以跳转到任意 nums[i j] 处: …

【排列回溯】Leetcode 46. 全排列

【排列回溯】Leetcode 46. 全排列 ---------------🎈🎈题目链接🎈🎈------------------- used数组,其实就是记录此时temp 里都有哪些元素使用了,一个排列里一个元素只能使用一次。 class Solution {List&…

Dockerd的使用

端口映射 存储卷 类似于mount,把真机的某个目录映射都容器里面 -v 选项可以有多个 利用存储卷修改配置文件 容器间网络模式 共享网络为 --networkcontainer:容器名 微服务架构 一种由容器为载体,使用多个小型服务组合来构建复杂的架构为…

如何编写属于自己的第一个exp

0x00 前言 在我们找到一个漏洞之后,可能会想着去fofa上搜语法进而扩大战果,而有些漏洞利用起来十分繁琐,这时候就需要一个exp来批量帮我们进行扫描工作,接下来就介绍一下如何进行exp的编写,这个过程中最重要的还是体现…

12-1-CSS 常用样式属性

个人主页:学习前端的小z 个人专栏:HTML5和CSS3悦读 本专栏旨在分享记录每日学习的前端知识和学习笔记的归纳总结,欢迎大家在评论区交流讨论! 文章目录 CSS 常用样式属性1 CSS 三角形2 CSS 用户界面样式2.1 什么是界面样式2.2 鼠标…

磁盘压力测试工具(vdbenchfio)

磁盘压力测试工具(vdbench&fio) 最近有遇到对象挂载为文件系统的需求,为了测试挂载后的读写性能,有了解了一些测试工具。下面给大家分享下我使用的工具vdbench和fio。 1 vdbench 官网文档:https://www.oracle.com/…

2024/4/5 ACM格式练习

一、知识点: (1)行数不固定:用Scanf的err返回值判断是否读到EOF。 (2)每行数据个数不固定:一个一个读数据和它后面的字符,判断后面的字符是否是换行符。如果是就说明读完了一行数据…

汽车网络安全管理

汽车网络安全管理 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事&#xff0c…

三菱FX3U计数器

1,定义计数器用了计数输入信号沿触发次数 2,分类主要分为普通计数器和高速计数器 范围定义C0-C9916位正向计数器(一般用)C100-c19916位正向计数器(保持型)C200-C21932位加减计数器(一般用)C220-C23432位加…