![]() |
發(fā)布時間: 2023-3-14 14:21
正文摘要:warning的意思我明白。但是我在看stm32的源碼的時候,,main函數(shù)里也沒有調用所有的函數(shù)。但是編譯就不會報warning。我想問問各位大佬怎么在不注釋掉void Delay1ms();的情況下。任然編譯后沒有warning。或者 ... |
清風皓月?lián)嵝睦@ 發(fā)表于 2023-3-14 16:33 感謝回復 |
暖西夏 發(fā)表于 2023-3-14 15:53 感謝回復,另外我想知道要是用#if...#endof的話,應該用什么條件判斷是否使用函數(shù)呢 |
lkc8210 發(fā)表于 2023-3-14 17:58 感謝回復,我搜了一下確實很符合我的需求 |
地板和5樓的適用于Keil MDK Keil C51有另一種方法 ![]() ![]() REMOVEUNUSED |
進入options中的User 將one ELF section per勾選即可;它的作用是將主函數(shù)沒用到的函數(shù)不進行編譯 |
按照下面這個圖勾選上就可以了,勾選之后沒用到的函數(shù)不會編譯進hex文件就不會報錯 |
20160912155348054.jpg (205.11 KB, 下載次數(shù): 49)
參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
---|---|---|
![]() | + 20 | 回帖助人的獎勵! |
可以設置的,但是C51我不建議這么做,沒調用的會分配內存的,51芯片內存本來就吃緊,不要浪費了。 |
借CSDN上一位大哥的回復 ***WARNINGL16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESS SEGMENT:?PR?_COMPARE?TESTLCD 說明:程序中有些函數(shù)例如COMPARE(或片段)以前(調試過程中)從未被調用過,或者根本沒 有調用它的語句。 這條警告信息前應該還有一條信息指示出是哪個函數(shù)導致了這一問題。只要做點簡單的調整就 可以。不理它也沒什么大不了的。但是,我們知道,即使沒有調用這個函數(shù),Keil仍然把它編譯連接進整個程序,不過浪費點ROM倒是不心疼。最主要的是,在這個函數(shù)中的變量,不會被列入覆蓋分析范圍內,也就是說這些變量占的空間不能被回收,這對于為數(shù)不多的RAM資源可是巨大的浪費啊。。。 解決方法: (1)刪除或注釋掉COMPARE()函數(shù) (2)或利用條件編譯#if…..#endif,可保留該函數(shù)并不編譯。 如果你一定要考慮可移植性的話,就這樣做,否則還是采取方法(1) (3)想不顯示這些提示:則可設置如下: option for target --->bl51 misc --->disable warning ==這里寫入16 |