【C++】C++ inline行內函數
阿新 • • 發佈:2018-12-14
如果函式體程式碼比較多,需要較長的執行時間,那麼函式呼叫機制佔用的時間可以忽略;如果函式只有一兩條語句,那麼大部分的時間都會花費在函式呼叫機制上,這種時間開銷就就不容忽視。
注意,要在函式定義處新增 inline 關鍵字,在函式宣告處新增 inline 關鍵字雖然沒有錯,但這種做法是無效的,編譯器會忽略函式宣告處的 inline 關鍵字。
當函式比較複雜時,函式呼叫的時空開銷可以忽略,大部分的 CPU 時間都會花費在執行函式體程式碼上,所以我們一般是將非常短小的函式宣告為行內函數。(也就說說對複雜函式沒必要使用 inline 關鍵字。)
使用行內函數的缺點也是非常明顯的,編譯後的程式會存在多份相同的函式拷貝,如果被宣告為行內函數的函式體非常大,那麼編譯後的程式體積也將會變得很大,所以再次強調,一般只將那些短小的、頻繁呼叫的函式宣告為行內函數。(其實行內函數的目的是把子程式直接主程式化,而不再進入子程式運行了,這樣主程式在執行時就會佔用大量記憶體。所以當子函式小時,可以這樣優化,因為對記憶體耗費不大。)
最後需要說明的是,對函式作 inline 宣告只是程式設計師對編譯器提出的一個建議,而不是強制性的,並非一經指定為 inline 編譯器就必須這樣做。編譯器有自己的判斷能力,它會根據具體情況決定是否這樣做。(哈哈,原來這麼智慧呀!)