找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1939|回復: 8
打印 上一主題 下一主題
收起左側(cè)

請問keil中源碼中不想注銷的函數(shù),怎么在編譯時不報錯

[復制鏈接]
回帖獎勵 20 黑幣 回復本帖可獲得 20 黑幣獎勵! 每人限 1 次
跳轉(zhuǎn)到指定樓層
樓主
ID:1043388 發(fā)表于 2023-3-14 14:21 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式

如圖所示,我在delay.h中保留了void Delay1ms();但是實際在main()中,我并沒有用,在編譯時就會報warning

*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?DELAY1MS?DELAY



warning的意思我明白。但是我在看stm32的源碼的時候,,main函數(shù)里也沒有調(diào)用所有的函數(shù)。但是編譯就不會報warning。我想問問各位大佬怎么在不注釋掉void Delay1ms();的情況下。任然編譯后沒有warning;蛘哒fstm32是怎么實現(xiàn)在有大量函數(shù)不被調(diào)用的情況下還能不報錯的


Snipaste_2023-03-14_14-07-30.png (76.83 KB, 下載次數(shù): 47)

圖1

圖1
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:807182 發(fā)表于 2023-3-14 15:53 | 只看該作者
借CSDN上一位大哥的回復            
                                                
                                                
***WARNINGL16:UNCALLEDSEGMENT,IGNOREDFOROVERLAYPROCESS
   SEGMENT:?PR?_COMPARE?TESTLCD
說明:程序中有些函數(shù)例如COMPARE(或片段)以前(調(diào)試過程中)從未被調(diào)用過,或者根本沒
有調(diào)用它的語句。
這條警告信息前應該還有一條信息指示出是哪個函數(shù)導致了這一問題。只要做點簡單的調(diào)整就
可以。不理它也沒什么大不了的。但是,我們知道,即使沒有調(diào)用這個函數(shù),Keil仍然把它編譯連接進整個程序,不過浪費點ROM倒是不心疼。最主要的是,在這個函數(shù)中的變量,不會被列入覆蓋分析范圍內(nèi),也就是說這些變量占的空間不能被回收,這對于為數(shù)不多的RAM資源可是巨大的浪費啊。。。
解決方法:

(1)刪除或注釋掉COMPARE()函數(shù)

(2)或利用條件編譯#if…..#endif,可保留該函數(shù)并不編譯。

   如果你一定要考慮可移植性的話,就這樣做,否則還是采取方法(1)

   (3)想不顯示這些提示:則可設置如下:
       option for target
       --->bl51 misc
       --->disable warning ==這里寫入16
回復

使用道具 舉報

板凳
ID:1034262 發(fā)表于 2023-3-14 16:27 | 只看該作者
可以設置的,但是C51我不建議這么做,沒調(diào)用的會分配內(nèi)存的,51芯片內(nèi)存本來就吃緊,不要浪費了。
回復

使用道具 舉報

地板
ID:1019324 發(fā)表于 2023-3-14 16:33 | 只看該作者
按照下面這個圖勾選上就可以了,勾選之后沒用到的函數(shù)不會編譯進hex文件就不會報錯

20160912155348054.jpg (205.11 KB, 下載次數(shù): 49)

20160912155348054.jpg

評分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎勵!

查看全部評分

回復

使用道具 舉報

5#
ID:1019324 發(fā)表于 2023-3-14 16:38 | 只看該作者
進入options中的User 將one ELF section per勾選即可;它的作用是將主函數(shù)沒用到的函數(shù)不進行編譯
回復

使用道具 舉報

6#
ID:161164 發(fā)表于 2023-3-14 17:58 | 只看該作者
地板和5樓的適用于Keil MDK
Keil C51有另一種方法




REMOVEUNUSED

回復

使用道具 舉報

7#
ID:1043388 發(fā)表于 2023-3-14 19:43 來自手機 | 只看該作者
lkc8210 發(fā)表于 2023-3-14 17:58
地板和5樓的適用于Keil MDK
Keil C51有另一種方法


感謝回復,我搜了一下確實很符合我的需求
回復

使用道具 舉報

8#
ID:1043388 發(fā)表于 2023-3-14 19:45 來自手機 | 只看該作者
暖西夏 發(fā)表于 2023-3-14 15:53
借CSDN上一位大哥的回復            
                                                
             ...

感謝回復,另外我想知道要是用#if...#endof的話,應該用什么條件判斷是否使用函數(shù)呢
回復

使用道具 舉報

9#
ID:1043388 發(fā)表于 2023-3-14 19:45 來自手機 | 只看該作者
清風皓月?lián)嵝睦@ 發(fā)表于 2023-3-14 16:33
按照下面這個圖勾選上就可以了,勾選之后沒用到的函數(shù)不會編譯進hex文件就不會報錯

感謝回復
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表