石家庄外贸网站制作,广州公司网站开发,设计者人才网官网,博览局网站建设最近在使用STM32CubeMX生成MDK工程是#xff0c;使用了 AC6 版本的编译器进行编译代码#xff0c;然后发现了一些警告#xff0c;但是在 AC5 版本下编译又正常。于是研究了下怎么屏蔽特定的警告#xff0c;这里记录一下。
1. Keil AC6屏蔽特定警告
遇到的警告如下#x…最近在使用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_suppress47 --diag_suppress5503. IAR屏蔽特定警告
IAR编译器警告如下 说我这里有变量定义了没有使用还有宏定义重名了。
IAR工程屏蔽特定警告方法只要在工程配置填入所需要屏蔽的警告类型就行了比如上面报的警告类型Pa181 和 Pe177 那么在工程配置如下 这样就能屏蔽IAR工程的特定警告了。