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 这条命令即可。

在这里插入图片描述

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

扫描二维码关注公众号,回复: 16901152 查看本文章

在这里插入图片描述

那么我们输入: -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工程的特定警告了。

猜你喜欢

转载自blog.csdn.net/luobeihai/article/details/132769655
今日推荐