1. 程式人生 > >為什麼inline函式應該在標頭檔案中定義?【轉】

為什麼inline函式應該在標頭檔案中定義?【轉】

(轉自:https://blog.csdn.net/ronnie_hu/article/details/62238311

inline函式(即行內函數)對編譯器而言必須是可見的,以便能夠在呼叫點展開該函式,與非inline函式不同的是,inline函式必須在呼叫該函式的每個檔案中定義。當然,對於同一程式的不同檔案,如果inline函數出現的話,其定義必須相同。

正因為如此,建議把inline函式的定義放到標頭檔案中,在每個呼叫該inline函式的檔案中包含該標頭檔案。這種方法保證了每個inline函式只有一個定義,且程式設計師無需複製程式碼,並且不可能在程式的生命週期中引起無意的不匹配的事情。

——摘自《C++ Primer》(第三版)

備註:

1)如果在標頭檔案中定義非inline函式,一旦該標頭檔案被多個檔案包含,就會造成該非inline函式的“重定義”,因而,不建議將非inline函式的定義放在標頭檔案中,但是非inline函式的宣告是可以放在標頭檔案中的。

2)inline函式可以省去函式呼叫的開銷,從而提高函式的執行效率,但是如果函式體內程式碼的執行時間相比於函式呼叫時間長的多的話,inline函式也就沒有什麼優勢了。