1.前言
編譯警告對于工程師們來說,是再常見不過的東西了。對于嚴謹?shù)墓こ處焸?,任?warning 都是不會忽視的。
2.巧妙使用 warning
在 STM32CubeIDE 中可以通過warning(甚至 error)的方式來通知工程師,使得一些容易遺漏的配置得到重視。
例如,在釋放參考代碼給客戶時,希望客戶注意到里面的項目名稱和項目版本,那么我們可以在代碼中,通過“#error ”來強調(diào)必須要修改的信息,通過“#warning”來備注需要注意的信息。具體代碼如圖 1:
這樣,當客戶編譯工程時,會出現(xiàn) error 和 warning,見圖 2,只有將“#error”和 “#warning”兩行分別注釋掉,才會分別消除這兩項編譯信息,以此達到警示客戶的目的。
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
因為我們配置了“-Wunused-function”,那么在編譯時,即使 MyTestFunction 沒有 被調(diào)用,編譯也不產(chǎn)生 warning。
我們還可以在 STM32CubeIDE 中,通過“Help”->“Information Center”->“Read STM32CubeIDE Documentation”->“C/C++ Compiler”,找到 GCC 編譯器文檔,從而發(fā)現(xiàn)更多的 warning 選項,根據(jù)需要主動屏蔽更多的 warning。見圖 3 :
3. 小結(jié)
事實上,在編譯項目時,warning 和 error 同樣重要,部分隱蔽的問題可能就和 warning 相關(guān)。當我們對工程代碼和編譯器有了更深層次的了解后,可以巧妙地使用和屏蔽 warning,幫我們更好地管理項目。
來源:STM32單片機
免責聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問題,請聯(lián)系小編進行處理
審核編輯 黃宇
-
STM32
+關(guān)注
關(guān)注
2270文章
10915瀏覽量
356776 -
IDE
+關(guān)注
關(guān)注
0文章
339瀏覽量
46797 -
編譯
+關(guān)注
關(guān)注
0文章
661瀏覽量
32938
發(fā)布評論請先 登錄
相關(guān)推薦
評論