亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

未使用的功能是否得到優化?

未使用的功能是否得到優化?

C++ C
牛魔王的故事 2019-11-30 14:40:52
一個相當簡單的問題...目前,編譯器往往會進行大量的優化。它們還會從最終輸出中刪除未使用的功能嗎?
查看完整描述

3 回答

?
大話西游666

TA貢獻1817條經驗 獲得超14個贊

這取決于編譯器。Visual C ++ 9可以做到這一點- static在編譯階段刪除未使用的功能(甚至有C4505警告),可以在鏈接階段根據鏈接器設置刪除具有外部鏈接的未使用功能。


查看完整回答
反對 回復 2019-11-30
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

如果使用進行編譯/Gy和鏈接,則MSVC(Visual Studio編譯器/鏈接器)可以執行此操作/OPT:REF。


如果您使用編譯-ffunction-sections -fdata-sections并鏈接,那么GCC / binutils可以執行此操作--gc-sections。


不了解其他編譯器。


查看完整回答
反對 回復 2019-11-30
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

通常,答案是:

是:用于未使用的static功能。

否:   用于未使用的全局可用功能。

編譯器不知道是否有其他編譯單元引用它。同樣,大多數對象模塊類型不允許在編譯后刪除函數,也無法為鏈接器提供一種方法來判斷是否存在內部引用。(鏈接程序可以告訴您是否存在外部鏈接程序。)某些鏈接程序可以執行此操作,但是有很多事情可以解決此問題。

當然,除非它是共享庫的一部分,否則任何鏈接程序都不會不必要地加載其自身模塊中的函數。(顯然,因為將來可能會在運行時引用它。)


查看完整回答
反對 回復 2019-11-30
  • 3 回答
  • 0 關注
  • 821 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號