關(guān)鍵字:STM32CubeIDE,warning,編譯警告
目錄預(yù)覽
1 前言2 巧用 warning3 小結(jié)
1. 前言
編譯警告對于工程師們來說,是再常見不過的東西了。對于嚴(yán)謹(jǐn)?shù)墓こ處焸儯魏?warning 都是不會忽視的。
2. 巧妙使用 warning
在 STM32CubeIDE 中可以通過warning(甚至 error)的方式來通知工程師,使得一些容易遺漏的配置得到重視。
例如,在釋放參考代碼給客戶時,希望客戶注意到里面的項(xiàng)目名稱和項(xiàng)目版本,那么我們可以在代碼中,通過“#error ”來強(qiáng)調(diào)必須要修改的信息,通過“#warning”來備注需要注意的信息。具體代碼如圖 1:
這樣,當(dāng)客戶編譯工程時,會出現(xiàn) error 和 warning,見圖 2,只有將“#error”和“#warning”兩行分別注釋掉,才會分別消除這兩項(xiàng)編譯信息,以此達(dá)到警示客戶的目的。
2.1. 主動屏蔽特定的 warning
在有些場景,我們還可以在特定的代碼或者文件作用域內(nèi),主動屏蔽特定的warning。
例如,工程中寫了一個測試函數(shù)“void MyTestFunction(void)”,但是在工程中暫時沒有被調(diào)用,直接編譯會得到“Wunused-function”的 warning。
但是如果在代碼中添加這樣的語句:
#pragma GCC diagnostic ignored "-Wunused-function"。
/*此區(qū)間內(nèi),如果出現(xiàn)函數(shù)僅申明,但是沒有被調(diào)用時,編譯不產(chǎn)生warning*/voidMyTestFunction(void){…}#pragma GCC diagnostic pop
因?yàn)槲覀兣渲昧恕?Wunused-function”,那么在編譯時,即使 MyTestFunction 沒有被調(diào)用,編譯也不產(chǎn)生 warning。
我們還可以在 STM32CubeIDE 中,通過“Help”->“Information Center”->“Read STM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 編譯器文檔,從而發(fā)現(xiàn)更多的 warning 選項(xiàng),根據(jù)需要主動屏蔽更多的 warning。見圖 3 :
3. 小結(jié)
事實(shí)上,在編譯項(xiàng)目時,warning 和 error 同樣重要,部分隱蔽的問題可能就和warning 相關(guān)。當(dāng)我們對工程代碼和編譯器有了更深層次的了解后,可以巧妙地使用和屏蔽 warning,幫我們更好地管理項(xiàng)目。
完整內(nèi)容請點(diǎn)擊“閱讀原文”下載原文檔。

長按掃碼關(guān)注公眾號
更多資訊,盡在STM32
▽點(diǎn)擊“閱讀原文”,可下載原文檔
原文標(biāo)題:應(yīng)用筆記|巧用 STM32CubeIDE 之編譯警告
文章出處:【微信公眾號:STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
單片機(jī)
+關(guān)注
關(guān)注
6067文章
44992瀏覽量
650505 -
STM32
+關(guān)注
關(guān)注
2293文章
11032瀏覽量
364993
原文標(biāo)題:應(yīng)用筆記|巧用 STM32CubeIDE 之編譯警告
文章出處:【微信號:STM32_STM8_MCU,微信公眾號:STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
stm32cubeIDE使用malloc失敗是什么原因?
stm32cubeIDE使用malloc失敗是什么原因?
stm32cubeIDE使用malloc失敗的原因?
STM32CubeIDE編譯設(shè)置是否有像keil一樣有編譯后執(zhí)行Bat腳本的功能和設(shè)置?
使用STM32CubeIDE調(diào)試STM32MP157D的M4內(nèi)核時報(bào)了錯誤怎么解決?
STM32CubeIDE為什么無法生成工程和代碼?
stm32cubeide編譯的時候報(bào)錯,無法生成hex文件怎么解決?
Stm32CubeIDE能像Keil一樣指定不同文件下的代碼編譯到不同的FLASH地址嗎?
stm32cubeide編譯HEX文件輸出只有1k,為什么?
巧用編譯器之編譯警告

評論