MDK-Keil AC6 Compiler屏蔽特定警告

最近在使用STM32CubeMX生成MDK工程是,使用了 AC6 版本的编译器进行编译代码,然后发现了一些警告,但是在 AC5 版本下编译又正常。于是研究了下怎么屏蔽特定的警告,这里记录一下。

1. Keil AC6屏蔽特定警告

遇到的警告如下:

在这里插入图片描述

这里说,这个表达式的返回值没有被使用。这个警告在 AC5 版本编译器是不会出现的,但是使用AC6版本编译器就出现了,而且是ST提供的库函数引入的警告。

要消除这个警告,需要去查找 ARM C/C++ AC6版本的编译器用户文档,它的官网如下:

https://developer.arm.com/documentation/101407/0538/Dialogs/Project/Options/Compiler/Arm-C-C----AC6–Compiler

下面的描述是AC6的文档描述:

# 所有警告— 是 uVision 默认设置。显示所有诊断 ( -Weverything ) 并排除 ( -Wno-xxx ) 编译器控制字符串中列出的诊断:
-Weverything
-Wno-reserved-id-macro
-Wno-unused-macros
-Wno-documentation-unknown-command
-Wno-documentation
-Wno-reserved-identifier(适用于 Arm Compiler 6.17 及更高版本)
# AC5 类似警告— 显示 ARM 编译器 5 将显示的所有警告。抑制以下警告:
-Wno-missing-variable-declarations
-Wno-missing-prototypes
-Wno-missing-noreturn
-Wno-sign-conversion
-Wnonportable-include-path
-Wno-packed
-Wno-reserved-id-macro
-Wno-unused-macros
-Wno-documentation-unknown-command
-Wno-documentation
-Wno-license-management
-Wno-parentheses-equality
-Wno-reserved-identifier(适用于 Arm Compiler 6.17 及更高版本)

大概意思就是,可以在 Keil 的配置选项中配置: -Wno-xxx 这样格式的命令,就可以忽略某种警告了。xxx 指的就是警告的类型,比如上面我截图遇到的警告 [-Wunused-value]

要忽略这个警告,那么只要在Keil的配置界面添加 :-Wno-unused-value 这条命令即可。

在这里插入图片描述

又比如说,下面的宏定义重复定义了的警告:

在这里插入图片描述

那么我们输入: -Wno-macro-redefined 这条命令,就可以忽略宏定义重复定义的警告了。

用法总结:

 -Wno-<警告类型>

这个警告类型我们可以看编译器给出的警告类型。

2. Keil AC5屏蔽特定警告

AC5版本编译器屏蔽特定警告的方式,有点区别。只要在Keil的配置选项中添加下面的指令:

--diag_suppress=<警告码>

这个警告码,编译器会给出的,比如我下面的编译警告,说我的宏定义重复定义了,还要变量c定义了,但是从来都没有使用。编译器给出的警告码就是 47 和 550,如下图:

在这里插入图片描述

如果想忽略的话,那么就可以填写如下指令:

--diag_suppress=47 --diag_suppress=550

3. IAR屏蔽特定警告

IAR编译器警告如下:

在这里插入图片描述

说我这里有变量定义了没有使用,还有宏定义重名了。

IAR工程屏蔽特定警告方法,只要在工程配置填入所需要屏蔽的警告类型就行了,比如上面报的警告类型,Pa181 和 Pe177 ,那么在工程配置如下:

在这里插入图片描述

这样就能屏蔽IAR工程的特定警告了。

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

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

相关文章

【计算机网络】HTTP(上)

文章目录 1.HTTP概念2. URLurlencode 和 urldecode转义规则 3. HTTP的宏观理解HTTP的请求HTTP的响应 4. 见一见HTTP请求和响应请求报头 1. 模拟一个简单的响应response响应报头 2. 从路径中获取内容ReadFile函数的实现 3.不同资源进行区分反序列化的实现ReadOneLine函数的实现P…

Delphi、C# 和 TypeScript 之父 Anders Hejlsberg(安德斯·海尔斯伯格,海神)赶潮AI

自2022年11月ChatGPT横空出世&#xff0c;一波由AIGC引发的热潮轰轰烈烈持续传播。 全球各国政府及大型互联网企业都在积极布局人工智能解决方案&#xff0c;抢占人工智能高地&#xff0c;推动人工智能产业健康发展。 Delphi、C# 和 TypeScript 之父&#xff0c;位列Microsof…

flink的物理DataFlow图及Slot处理槽任务分配

背景 在flink中&#xff0c;有几个比较重要的概念&#xff0c;逻辑DataFlow图&#xff0c;物理DataFlow图以及处理槽执行任务&#xff0c;本文就来讲解下这几个概念 概念详解 假设有以下代码&#xff1a;数据源和统计单词算子的并行度是2&#xff0c;数据汇算子的并行度是1&…

HotSpot垃圾收集算法实现细节

文章目录 根节点枚举安全点安全区域记忆集与卡表写屏障三色标记 根节点枚举 在可达性分析算法中&#xff0c;由于GC Roots众多&#xff0c;所以在从GC Roots集合中进行引用链查找时会耗费大量时间。 迄今为止&#xff0c;所有收集器在根节点枚举这一步骤时都是必须暂停用户线…

​怎么安全无损地将操作系统转移到固态硬盘?

为什么需要转移系统到固态硬盘&#xff1f; 现如今&#xff0c;许多用户想要将自己的操作系统转移到固态硬盘&#xff0c;这是为什么呢&#xff1f;我们在下面向大家简单地介绍了一下迁移系统的优势&#xff1a; ​提升计算机性能&#xff1a;硬盘&#xff08;HDD…

储能直流侧计量表DJSF1352

安科瑞 华楠 具有CE/UL/CPA/TUV认证 DJSF1352-RN导轨式直流电能表带有双路直流输入&#xff0c;主要针对电信基站、直流充电桩、太阳能光伏等应用场合而设计&#xff0c;该系列仪表可测量直流系统中的电压、电流、功率以及正反向电能等。在实际使用现场&#xff0c;即可计量总…

Golang-GJSON 快速而简单的方法来从 json 文档获取值

GJSON 是一个 Go 包&#xff0c;它提供了一种快速而简单的方法来从 json 文档获取值。它具有单行搜索、点符号路径、迭代和解析 json 行等功能。 GJSON 也可用于Python和Rust 入门 安装中 要开始使用GJSON 请安装 Go 并运行 go get &#xff1a; $ go get -u github.com/ti…

使用rabbitmq进行支付之后的消息通知

订单服务完成支付后将支付结果发给每一个与订单服务对接的微服务&#xff0c;订单服务将消息发给交换机&#xff0c;由交换机广播消息&#xff0c;每个订阅消息的微服务都可以接收到支付结果. 微服务收到支付结果根据订单的类型去更新自己的业务数据。 相关技术方案 使用消息…

数学建模B多波束测线问题B

数学建模多波束测线问题 1.问题重述&#xff1a; 单波束测深是一种利用声波在水中传播的技术来测量水深的方法。它通过测量从船上发送声波到声波返回所用的时间来计算水深。然而&#xff0c;由于它是在单一点上连续测量的&#xff0c;因此数据在航迹上非常密集&#xff0c;但…

图解 LeetCode 算法汇总——链表

本文首发公众号&#xff1a;小码A梦 一般数据主要存储的形式主要有两种&#xff0c;一种是数组&#xff0c;一种是链表。数组是用来存储固定大小的同类型元素&#xff0c;存储在内存中是一片连续的空间。而链表就不同于数组。链表中的元素不是存储在内存中可以是不连续的空间。…

WPS或EXCEL表格单元格下拉快捷选择项修改及设置方法

WPS或新版本EXCEL的设置下拉选项的方法是.点击一个单元格,菜单上选择数据,下拉列表即可设置,双击文字可编辑 EXCEL 旧的版本不同,可能有不同方法 方法一, 1.在空白区域里面&#xff0c;准备好需要填入下拉菜单里面的内容。 2.选中一个需要添加下拉菜单的单元格&#xff0c;然后…

MicroStation中将二维对象投射到三维实体

在三维建模中&#xff0c;偶而会遇到需要将一个2D对象沿Z轴或指定方向投射到一个3D实体&#xff0c;在3D实体表面生成这个2D对象的投影对象。 需要使用的操作命令为&#xff1a; Stencil 2D Elements on 3D Geometry&#xff0c;位于可视化工作流、实用工具栏内。 操作时先后选…