同样一个源文件(如"stm32h7xx.h"),keil会先从用户路径找文件,pc-lint会先从keil安装路径找源文件
1、问题
在使用pc-lint检测工程时碰到了一个问题
C:\Users\86151\AppData\Local\Arm\Packs\Keil\STM32H7xx_DFP\2.4.3\Drivers\CMSIS\Device\ST\STM32H7xx\Include\stm32h7xx.h 177 warning 1564: converting integer constant expression, which evaluates to 0 but is not an integer literal equal to zero or one, to bool
错误显示在177行出现了#1564错误,但是在keil的源文件中“SET = !RESET”并不在177行,很奇怪,先将该错误屏蔽后再次进行静态分析。
再次静态分析后发现还是177行报错,很奇怪。
经过查找后发现keil安装目录下的"SET = !RESET"在177行,有可能是pc-lint调用了keil安装目录下的“stm32h7xx.h”文件,没有调用工程目录下的文件,导致错误。
2、解决
将pc-lint project.Int中的keil系统路径去掉
再次运行静态分析,仍然报错,不清楚原因,配置未生效,将问题反馈给厂家解决。
将keil工程目录下的“stm32h7xx.h”文件删除,问题解决。
3、结论
同样一个源文件(如"stm32h7xx.h"),keil会先从用户路径找文件,pc-lint会先从keil安装路径找源文件,可能导致报错不对应。