嵌入式物件導向程式設計 C 對C的函式擴充套件

2021-10-03 22:19:11 字數 1544 閱讀 6155

1、 inline是由編譯決定,使用inline關鍵字只是申請編譯器。

2、 巨集函式:(define)省去了自定義函式呼叫時所需對的形參及函式體裡需要分配的空間;省去了函式呼叫、傳參、函式返回、釋放等過程(提高執行效率);利用編譯時間換取記憶體空間。

限制:頻繁呼叫且功能簡單的函式可使用巨集函式。

例: #define add(a,b) a+b

3、 內聯函式(inline):將函式體裡的語句內嵌到函式呼叫的地方;省去了函式呼叫、返回等操作;提高了執行效率;利用記憶體空間換取編譯時間。

例:

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){}

int print(char c){}

這兩句若同時出現在程式中,會出現二義性,是錯誤的做法,不可取。

5、 預設引數語法:若某引數為預設引數(預設值),那其後面的引數必須全部為預設引數。

正確例:int add(int a, int b = 1, int c = 9){}

錯誤例:int add(int a, int b = 1, int c ){}

6、 函式的形參佔位符:預留開發介面(無引數名宣告的形參,僅作為引數型別宣告)。

正確例: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檔案,各個模組寫得很細緻。專案都快接近尾聲了,我什麼...