1、 inline是由編譯決定,使用inline關鍵字只是申請編譯器。
2、 巨集函式:(define)省去了自定義函式呼叫時所需對的形參及函式體裡需要分配的空間;省去了函式呼叫、傳參、函式返回、釋放等過程(提高執行效率);利用編譯時間換取記憶體空間。
限制:頻繁呼叫且功能簡單的函式可使用巨集函式。3、 內聯函式(inline):將函式體裡的語句內嵌到函式呼叫的地方;省去了函式呼叫、返回等操作;提高了執行效率;利用記憶體空間換取編譯時間。例: #define add(a,b) a+b
例:
inline int add(int a, int b)
int main()
4、 c語言中的inline:凡是inline中修飾函式都會被內嵌到函式呼叫的地方。
限制:短小簡單且不被頻繁呼叫的函式才可使用inline。5、 c++中的inline:編譯器做判斷,用inline修飾的函式不一定被內嵌到呼叫的地方。
6、 c++中使用inline的限制條件:
7、 注意事項:內聯函式inline的宣告必須出現在內聯函式第一次呼叫之前。
1、 定義:定義函式時可使用已存在的函式名,但是
2、 條件:該函式的形參的個數、順序或者型別須與已存在的函式不同(返回值不能作為過載條件)。
3、 使用示例(非完整**)
int print(int num)
int print(char ch,int num = 5)
int print(){}
int add(int a, int b, int c){}
int add(int a, int b, char c){}
4、 注意事項:允許函式形參表中有預設引數,但是預設引數會破壞過載條件。
例:int print(char c, int num = 9){}5、 預設引數語法:若某引數為預設引數(預設值),那其後面的引數必須全部為預設引數。int print(char c){}
這兩句若同時出現在程式中,會出現二義性,是錯誤的做法,不可取。
正確例:int add(int a, int b = 1, int c = 9){}6、 函式的形參佔位符:預留開發介面(無引數名宣告的形參,僅作為引數型別宣告)。錯誤例:int add(int a, int b = 1, int c ){}
正確例:int add(int a, int b ,char c){}int add(int a, int b, int){}
錯誤例:int add(int a, int b , int c ){}
int add(int a, int b , int ){}
錯誤例中,這兩句若同時出現在程式中,會出現二義性,是錯誤的做法,不可取。
嵌入式物件導向程式設計 型別轉換
一 static casr expr 1 類似於c語言的強制轉化,保證 的安全性和正確性。2 可用於 相關型別轉換 例如整型 實型 子類轉父類 void 指標與其他型別指標之間的型別轉換。3 不允許指標之間型別的轉換 特例 僅允許void 與其他指標之間的型別轉換 如 char ch a char ...
嵌入式物件導向程式開發 C 模板
概述模板是一種引數化的多型工具。所謂引數化的多型性,是指將程式所處理的物件的型別引數化,使一段程式 可以用於處理多不同型別的物件。採用模板程式設計,可以為各種邏輯功能相同而資料型別不同的程式提供一種 共享的機制。1 函式模板 1 一般說明形式 template 模板形參表 返回值型別函式名 模板函式...
嵌入式C程式設計小結
最近在看公司嵌入式開發的文件和c語言 真佩服那些設計的人員,從需求分析說明書 時序圖 概要設計 詳細設計 到code階段,都做得很細緻。而且純粹是c語言開發,軟體設計人員必須對硬體有很深的了解才行,我看了一下裡面的code,足足有幾百多個.h和.c檔案,各個模組寫得很細緻。專案都快接近尾聲了,我什麼...