C++::增加目標碼(object code)的大小的操作

Inside_Zhang發表於2015-11-12

目標碼(object code)是電腦科學中編譯器彙編器處理原始碼後所生產的程式碼,它一般由機器程式碼或接近於機器語言的程式碼組成。目標檔案(object file)即存放目的碼的計算機檔案,它常被稱作二進位制(binaries)

目標碼的增加,其實是源於程式碼體積(量)的增加。

inline

inline:行內,與之相對outline:行外。

inline:背後的整體整體觀念是,將“對此函式的每一個呼叫”都以函式本體替換之。這無疑會增加目標碼(object code)的大小。

巨集函式(Macros)

內聯(inline)是為了彌補編譯器對巨集函式所缺乏的安全檢查而提出,也即內聯保留了巨集的優勢,即像函式,但不會招致函式呼叫的額外開銷,比如建棧,將返回值,引數以及區域性變數,壓棧最後的清棧操作等等。

無論是內聯還是巨集函式,都是執行的文字替換,這是二者效率的根源,同時不可避免的也會增加目標碼。

相關文章