日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

内联函数和宏定义

發布時間:2024/4/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 内联函数和宏定义 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.內聯函數和宏定義的區別

內聯函數和普通函數相比可以加快程序的運行速度,在編譯的時候內聯函數可以直接鑲嵌到目標代碼中,而宏只是一個不加任何檢查的簡單的替換。內聯函數要做參數類型檢查。宏不是函數,只是在編譯預處理階段將程序中的有關字符串替換成宏體。
inline是嵌入代碼,在調用函數的地方直接把代碼寫到這個地方,而不用中斷調用。對于短小的代碼來說,inline增加空間消耗,換時間效率,也就是我們常說的空間換時間。但是inline需要根據具體情況來選擇是否需要使用。

2.內聯函數的使用情況

內聯函數一般用于以下情況
(1)一個函數不斷被重復調用
(2)函數只有簡單的幾行代碼,且不應該包含for,while,switch這些語句
一般小程序不需要使用內聯函數,如果完成一個大的工程項目,且一個簡單的函數被調用多次,那么可以考慮使用。
關鍵字inline必須與函數定義放在一起才能使函數成為內聯函數,比如

inline void fun(); void fun(){}

如上面這種情況就起不到作用。
再比如

void fun(); inline void fun(){}

上面這種情況才會起到作用。
在書籍中有提出,宏是用于"實現的關鍵字"而不是用于“聲明的關鍵字”。

3.內聯函數不宜使用的情況

那么不禁提出問題,既然內聯函數可以提高效率,為什么不都使用內聯函數呢?
原因是內聯是以代碼膨脹(復制)為代價,省去函數調用的開銷,從而提高函數的執行效率。如果執行函數體內的代碼的時間遠遠比函數調用開銷大,那么使用內斂函數效益會很小,這時候犧牲空間換時間就顯得不值當了。另外,每處都盡可能使用內聯函數的話,將使程序的代碼量變大,多消耗很多空間。
以下情況不宜使用內聯
(1)如果函數體內的代碼較長,使用內聯會導致消耗較多空間。
(2)如果函數體內出現循環,執行函數體內代碼的開銷要比調用函數開銷大。
一個好編譯器會自動取消不合理的內聯。

總結

以上是生活随笔為你收集整理的内联函数和宏定义的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。