1、问题现象
我在移植 USBX 相关工程的时候碰到一个非常有趣的 Keil 编译问题,有意分享给大家。
2、问题分析
首先 arm_compat.h 这个头文件位于C:Keil_v5ARMARMCLANGBin..includearm_compat.h, 是位于 Keil 安装路径下的,很明显是编译器 Keil 提供的库文件。而 cmsis_armclang.h 头文件,位于../../../../../../Drivers/CMSIS/Include/cmsis_armclang.h, 是 CMSIS 标准头文件。
另外,arm_compat.h 头文件只在 Keil 编译器下提供,对于 IAR 和 STM32CubeIDE 并没有此头文件,因此,这就解释了为什么此问题只与 Keil 有关了。
3、小结
因头文件包含顺序导致的编译错误比较少见,平时我们也很少关注,因此我特意分享此例供大家参考。
阅读全文