內聯函式,auto關鍵字(C 11)

2021-09-26 06:39:14 字數 1485 閱讀 1289

1,inline修飾的函式叫內聯函式,編譯時c++編譯器會在呼叫內聯函式的地方展開,編譯期間編譯器會用函式體替換函式的呼叫,沒有函式壓棧的開銷,提公升了程式執行效率

2,檢視方式

在release模式下,檢視編譯器生成的彙編**中石否存在 :call 函式名

在debug模式下,看是否有函式壓棧

3,特性:

<1>inline 是以空間換時間的方法,省去額外函式呼叫的開銷,所以**很長或者有迴圈/遞迴的函式不宜使用內聯函式

<2>inline 對於編譯器只是乙個建議,編譯器會自動優化,如果定義的內聯函式裡有迴圈/遞迴**,編譯器在優化時會忽略掉內聯

4,巨集的優缺點

優點:1,增強**的復用性

2,提高效能

缺點:1,不方便除錯巨集

2,導致**可讀性差,可維護性差,容易誤用

3,沒有型別安全的檢查

c++有哪些技術能代替巨集

1,常量定義 換用const

2,函式定義 換用內聯函式

1,auto 作為乙個新的型別指示符來指示編譯器,auto 宣告的變數必須由編譯器在編譯時期推到而得,使用auto定義變數時必須對其進行初始化

2,auto宣告指標時,auto 與 auto* 沒有區別,但是宣告引用,必須加& 即 auto&

在同一行定義多個變數時,變數的型別必須相同

3,

auto 不能做為函式引數,因為編譯器無法對引數實際型別推導

auto不能直接宣告陣列

auto 最長常見的優勢是,新式基於範圍的for迴圈,還有lambda 表示式

auto 不能定義非靜態成員變數

例項化模板時,不能使用auto 作為模板引數

C 內聯函式 auto關鍵字

以inline修飾的函式叫做內聯函式,編譯時c 編譯器會在呼叫內聯函式的地方展開,沒有函式壓棧的開銷,內聯函式提公升程式執行的效率。特性 c 11中,auto作為乙個新的型別指示符來指示編譯器,auto宣告的變數必須由編譯器在編譯時期推導而得 注 例 int testauto int main au...

C 11特性 auto關鍵字

正文 本文的內容已經不新鮮了。關於auto,翻來覆去被人知道的都是這些東西,本文並沒有提出新穎的auto用法。本人原是痛恨部落格一篇篇都是copy而來缺乏新意的探索,當然,本文不是copy而來,但發布這樣一篇大家皆知的文章心裡甚是惶恐。本文對auto的內容加以整理,權當是自己的複習筆記了。回到頂部 ...

C 11特性 auto關鍵字

本文的內容已經不新鮮了。關於auto,翻來覆去被人知道的都是這些東西,本文並沒有提出新穎的auto用法。本人原是痛恨部落格一篇篇都是copy而來缺乏新意的探索,當然,本文不是copy而來,但發布這樣一篇大家皆知的文章心裡甚是惶恐。本文對auto的內容加以整理,權當是自己的複習筆記了。早在c 98標準...