1、問(wèn)題現(xiàn)象
我在移植 USBX 相關(guān)工程的時(shí)候碰到一個(gè)非常有趣的 Keil 編譯問(wèn)題,有意分享給大家。
2、問(wèn)題分析
首先 arm_compat.h 這個(gè)頭文件位于C:Keil_v5ARMARMCLANGBin..includearm_compat.h, 是位于 Keil 安裝路徑下的,很明顯是編譯器 Keil 提供的庫(kù)文件。而 cmsis_armclang.h 頭文件,位于../../../../../../Drivers/CMSIS/Include/cmsis_armclang.h, 是 CMSIS 標(biāo)準(zhǔn)頭文件。
另外,arm_compat.h 頭文件只在 Keil 編譯器下提供,對(duì)于 IAR 和 STM32CubeIDE 并沒(méi)有此頭文件,因此,這就解釋了為什么此問(wèn)題只與 Keil 有關(guān)了。
3、小結(jié)
因頭文件包含順序?qū)е碌木幾g錯(cuò)誤比較少見(jiàn),平時(shí)我們也很少關(guān)注,因此我特意分享此例供大家參考。