導航:首頁 > 源碼編譯 > inline函數在編譯時不做類型檢查

inline函數在編譯時不做類型檢查

發布時間:2025-01-11 09:41:35

1. inline 和 宏定義的區別

inline函數是C++引入的機制,目的是解決使用宏定義的一些缺點。
1.為什麼要引入內聯函數(內聯函數的作用)
用它替代宏定義,消除宏定義的缺點。宏定義使用預處理器實現,做一些簡單的字元替換因此不能進行參數有效性的檢測。另外它的返回值不能被強制轉換為可轉換的合適類型,且C++中引入了類及類的訪問控制,在涉及到類的保護成員和私有成員就不能用宏定義來操作。
2.inline相比宏定義有哪些優越處
(1)inline函數代碼是被放到符號表中,使用時像宏一樣展開,沒有調用的開銷效率很高;
(2)inline函數是真正的函數,所以要進行一系列的數據類型檢查;
(3)inline函數作為類的成員函數,可以使用類的保護成員及私有成員;
3.inline函數使用的場合
(1)使用宏定義的地方都可以使用inline函數;
(2)作為類成員介面函數來讀寫類的私有成員或者保護成員;
4.為什麼不能把所有的函數寫成inline函數
內聯函數以代碼復雜為代價,它以省去函數調用的開銷來提高執行效率。所以一方面如果內聯函數體內代碼執行時間相比函數調用開銷較大沒有太大的意義;另一方面每一處內聯函數的調用都要復制代碼,消耗更多的內存空間,因此以下情況不宜使用內聯函數。
(1)函數體內的代碼比較長,將導致內存消耗代價;
(2)函數體內有循環,函數執行時間要比函數調用開銷大;
另外類的構造與析構函數不要寫成內聯函數。
5.內聯函數與宏定義區別
(1)內聯函數在編譯時展開,宏在預編譯時展開;
(2)內聯函數直接嵌入到目標代碼中,宏是簡單的做文本替換;
(3)內聯函數有類型檢測、語法判斷等功能,而宏沒有;
(4)inline函數是函數,宏不是;
(5)宏定義時要注意書寫(參數要括起來)否則容易出現歧義,內聯函數不會產生歧義;

閱讀全文

與inline函數在編譯時不做類型檢查相關的資料

熱點內容
桂林銀行app如何查詢積分和等級 瀏覽:283
app第三方接入都有什麼 瀏覽:585
win7命令快捷鍵 瀏覽:541
安卓手機上的主鍵按不了了怎麼辦 瀏覽:938
前端小程序加密 瀏覽:889
python寫xls 瀏覽:310
壓縮干糧圖片 瀏覽:838
怎麼看網站被加密的視頻 瀏覽:848
哪個app可以弄會動的照片模板 瀏覽:272
如何關閉電腦的時鍾源伺服器 瀏覽:902
adb命令設置主屏幕應用 瀏覽:990
編譯後的bak文件 瀏覽:259
php生成文件名 瀏覽:880
日照智能車輛移動機器人導航演算法 瀏覽:115
解壓力的食療 瀏覽:126
密鑰如何加密隨機數 瀏覽:381
統計學中pre的演算法 瀏覽:411
inline函數在編譯時不做類型檢查 瀏覽:269
經緯度查詢android 瀏覽:762
vivoz5x方舟怎麼進伺服器 瀏覽:499