C++對內聯函數的限制:
不能存在任何形式的循環語句不能存在過多的條件判斷語句函數體不能過於龐大不能對函數進行取址操作函數內聯聲明必須在調用語句之前 |
編譯器對於內聯函數的限制並不是絕對的,內聯函數相對於普通函數的優勢只是省去了函數調用時壓棧,跳轉和返回的開銷。因此,當函數體的執行開銷遠大於壓棧,跳轉和返回所用的開銷時,那麼內聯將無意義。 |
內聯函數總結:
1)內聯函數在編譯時直接將函數體插入函數調用的地方
2)inline只是一種請求,編譯器不一定允許這種請求
3)內聯函數省去了普通函數調用時壓棧,跳轉和返回的開銷