當前位置:首頁 » 編程軟體 » 沒有被調用的函數會參與編譯嗎

沒有被調用的函數會參與編譯嗎

發布時間: 2025-05-15 13:42:51

㈠ 單片機C語言編程,假如頭文件里的函數沒有被調用,那麼該函數會不會最後編譯出來而佔用內存

沒有用到自然就不會被編譯,就不會占空間

如果頭文件定義有1000個函數
你的程序只用了1個函數

那麼編譯後的程序,只有這一個函數的內容

㈡ keilc中怎麼使一個庫函數不調用時不編譯

它不會被嵌入代碼而佔用空間的,當然動態鏈接庫除外。KEIL把源代碼編譯成最終執行代碼,要經歷兩個過程,一是編譯:即把源文件編譯成中間目標文件,簡單的說是把C文件編譯成.O或.obj文件;二是鏈接,這個是生成可執行文件的關鍵,它會根據MAIN函數頭和各個中斷函數中調用的函數去中間目標文件中選擇對應的代碼並最終打包到一起生成可執行文件。所以,聲明未被用到的函數是不會佔用程序存儲空間的,但是它會被編譯,只是在連接時不會被選用。希望對你有幫助!!!

㈢ GCC編譯器加上優化選項會不會自動去掉沒用到的函數

實際上在編譯之後還要鏈接,才能生成最終的目標代碼。
在鏈接的過程中,只有用到的函數才會被鏈接進目標代碼。也就是說,沒有用到的函數不會被鏈接到目標代碼,也不會增大目標代碼的體積。

㈣ C++ include的頭文件裡面的函數從來沒用過會被編譯進exe嗎

頭文件里你在代碼中沒有調用過的函數不會被編譯到exe文件中。如果沒有用過的函數也編譯進去,那可執行程序得多大。
雖然不會編譯進去,平常還是需要用哪些函數就包含哪個頭文件,不需要的的不包含,編譯時費時間。
C是多文件編譯的,編譯時會把每個Cpp文件單獨編譯,然後在鏈接過程中,代碼中調用了哪個函數,編譯器就會鏈接哪個函數,沒有調用的不會鏈接。

㈤ 請問stm32我把所有的外設.c文件都放在工程裡面,但是我再mian文件中不去引用它的函數,會影響到編譯嗎

如果外設文件是單獨的.c,不會有影響,這些文件會編譯,但不會link進去。如果某個.c中有沒有用到的函數,就得看編譯選項中優化級別那個參數。如果是-o0,就會把沒有用到的函數連進去。如果是-o1~-o3,就不會。

㈥ C語言中已經聲明或定義的變數如果在代碼中沒有使用到,編譯器會怎樣處理

就一直在那裡放著。如果是全局變數,編譯器連提示都沒有;若是局部變數編譯器在編譯時會提醒說某某局部變數沒有使用;若你不理會,在代碼修改前就不會再提醒了。這些變數未使用,卻一直佔用著內存空間,但不影響代碼的正確性……

㈦ 嵌入式中函數不會被調用會編譯到固件嗎

  1. 嵌入式系統

  2. 函數如果僅是定義了,而沒有被其它函數調用,這種情況下,優化系統不會將此函數編譯進最終可執行結果。所以更不會佔用內存。

  3. 2.PC系統

  4. 通常情況下函數如果僅是定義了,但未被調用,系統會進行編譯,能夠檢查並發現函數中的問題,但是否編譯進最終的可執行文件受編譯系統的控制,如果未被編譯到系統中則不會佔用內存。即便編譯到了系統中,由於PC系統在運行時,並不會將所有的程序都載入至內存,因此,還會受到操作系統本身的限制。

  5. 3.BS系統

  6. 伺服器端的程序通常情況下會佔用內存,因為系統不清楚是否會被調用,尤其是在WebService這樣的系統上。

  7. 客戶端的程序,無論是否被調用,在傳輸、載入等情況下,肯定會被代碼管理系統預編譯,因此,也是需要佔用內存的。

熱點內容
不用internet打開ftp 發布:2025-05-15 23:06:00 瀏覽:152
sql字元串取數字 發布:2025-05-15 22:57:45 瀏覽:123
推薦編程課 發布:2025-05-15 22:34:12 瀏覽:617
表拒絕訪問 發布:2025-05-15 22:29:37 瀏覽:978
電腦怎樣解壓文件 發布:2025-05-15 22:25:32 瀏覽:439
dns伺服器怎麼看 發布:2025-05-15 22:17:27 瀏覽:151
3dm的壓縮包 發布:2025-05-15 22:09:23 瀏覽:662
和存儲字長 發布:2025-05-15 21:54:09 瀏覽:515
用什麼寫c語言 發布:2025-05-15 21:35:56 瀏覽:418
linux讀取u盤 發布:2025-05-15 21:32:13 瀏覽:508