只是一些opitmization考慮:英特爾C++編譯器是否優化了代碼中從未調用過的函數?
有誰知道它肯定是否英特爾C++編譯器(如ICC 13.0,而引起的,與像/ O3等一些optimzation選項編譯)會自動優化出所有不使用/多餘結構/類/功能/下面在像examplefun(代碼變量):
//...defining examplefunc()....//
const int a=0;
if (a>0)
int b=examplefunc();
呃,我覺得這個區別有點平庸。整個工具鏈是「編譯器」,它本身有一個「編譯器」和「鏈接器」(和「預處理器」等)。我們可以推斷上下文的含義。 – GManNickG
@GManNickG:雖然我可以同意這兩個都是工具鏈的一部分,但如果你想通過檢查生成的對象來檢查它,那麼差異就很重要,函數將會在那裏(編譯器無法知道不同的TU是否使用它),但是並不意味着鏈接器不會刪除它。 –
您正在回答您的問題(「編譯器」的定義)。英特爾編譯器包含了所有階段(「預處理器」,「編譯器」,「鏈接器」),我的意思是OP很可能意味着(也可能意味着,而且我會以同樣的方式寫作)。 「編譯器」這個詞被重載意味着多重的東西,但是你(不合理的,IMO)只是假設一個單一的定義,這會導致OP錯誤。如果你明白我的意思,我覺得它「不公平」。不要說你的定義是「錯誤的」,只是它不是唯一的定義。 – GManNickG