1、 文檔目標(biāo)
記錄問題STM32g0xx.h等有關(guān)ST的可讀文件,盡量勿修改文件格式及對其代碼進行添加和刪減,記錄查找問題的過程中的疑惑,并如何給予客戶正確的回復(fù),幫助銷售完成驗收,以便后續(xù)尾款支付。
2、 問題場景
在工程中客戶移除了ST頭文件的可讀保護并進行了該文件的代碼修改,在STM32g0xx.h中進行了函數(shù)的宏定義,但應(yīng)用處并沒有添加任何頭文件,編譯不報錯。若在其他文件中添加該函數(shù)的宏定義,編譯報錯。

圖2-1(未應(yīng)用未報錯,不符合語法規(guī)則)
注:絕對不建議刪除對stm32gOxx.h文件的只讀保護。所有來自ST的只讀頭文件都有很好的保護理由。
3、軟硬件環(huán)境
1)、軟件版本:MDK 5.38 Arm 編譯器版本 6.19
2)、電腦環(huán)境:Windows 11
3)、外設(shè)硬件:無
4、解決方法
1)、宏定義的尋找模式
#define指令是C預(yù)處理器的一部分。在編譯之前進行處理。一個頭文件沒有被你的項目使用或引用,這個頭文件將不會成為你的項目構(gòu)建的一部分,在項目中根本不使用由#define定義的那些參數(shù),則它們將不會作為編譯的一部分包含在內(nèi)。
2)、有關(guān)ST的只讀頭文件。
宏定義在STM32G0xx .h中,它總是包含在基于STM32G0xx設(shè)備的項目中并使用。在后臺運行的編譯器工具鏈負(fù)責(zé)動態(tài)語法檢查以及文本完成在某些情況下可能是不可靠的,所以在你的情況下,宏定義中函數(shù)等仍然是灰色,并且函數(shù)應(yīng)用處沒有添加頭文件,但編譯通過。
定義在STM32G0xx .h中的函數(shù),它總是包含在基于STM32G0xx設(shè)備的項目中并使用。將STM32G0xx .h修改部分還原,并且將其文件格式設(shè)置為可讀即可,如圖4-1在Comm.h文件并進行宏定義,而后編譯出現(xiàn)錯誤,符合檢查動態(tài)語法規(guī)則。

圖4-1(未應(yīng)用報錯,符合語法規(guī)則)

首頁 > 資源中心 > FAQ
