嵌入式c 軟體開發筆記 第六講

2021-10-14 01:43:46 字數 2359 閱讀 1366

對檔案進行讀寫操作

讀檔案operator>>

int get();

istream& get(int);

istream & get(char*,int n, char deli )

istream& getline(char * ,int n);

get vs getline

get 和getline 最大的區別就是,get 遇到界定符時,停止執行,但並不從流中提取界

定符,再次呼叫遇到同乙個界定符,函式將立即返回,不會提取輸入。getline 則不同,它

將從輸入流中提供界定符,但傷然不會把它放到緩衝區中。

寫檔案operator<<

osream put(char)

關閉檔案

呼叫成員函式close()來關閉檔案

實現檔案拷貝

#include 「pch.h」

#include

#include

using namespace std;

int main()

fstream ofs(「dest.txt」, ios::out | ios::trunc);

if (!ofs)

// int data;

// while(ifs>>data,!ifs.eof()) // 只能以空格table 回車作為標誌

// {

// cout<<「x」《讀寫二進位制檔案

ostream & write(const char * buffer,int len);

istream & read(char * buff, int len);

案例隨機讀寫函式

c++異常

c語言異常處理

方法:語言中錯誤的處理,通常採用返回值的方式或是置位全域性變數的方式

c++異常處理機制

作用:異常的引發和異常的處理不必在同乙個函式

異常的基本語法

trytry塊可以巢狀

程式按順序尋找匹配的異常處理器,丟擲的異常將被第乙個型別符合的異常處理器捕獲

如果內層try塊後面沒有找到合適的異常處理器,該異常向外傳播,到外層try塊後面的catch塊中尋找

沒有**獲的異常將呼叫terminate函式,terminate函式預設呼叫abort終止程式的執行

可以使用set_terminate函式指定terminate函式將呼叫的函式

catch

乙個異常處理器一般只捕捉一種型別的異常

異常處理器的引數型別和丟擲異常的型別相同

…表示可以捕獲任何異常

throw

可以丟擲內建型別異常也可以拋出自定義型別異常

throw丟擲乙個類物件會呼叫拷貝建構函式

異常被丟擲後,從進入try塊起,到異常被拋擲前,這期間在棧上的構造的所有物件,都會被自動析構

機制1) 若有異常則通過throw操作建立乙個異常物件並拋擲。

2) 將可能丟擲異常的程式段嵌在try塊之中。控制通過正常的順序執行到達try語句,然後執行try塊內的保護段。

3) 如果在保護段執行期間沒有引起異常,那麼跟在try塊後的catch子句就不執行。程式從try塊後跟隨的最後乙個catch子句後面的語句繼續執行下去。

4) catch子句按其在try塊後出現的順序被檢查。匹配的catch子句將捕獲並處理異常(或繼續拋擲異常)。

5) 如果匹配的處理器未找到,則執行函式terminate將被自動呼叫,其預設功能是呼叫abort終止程式。

6)處理不了的異常,可以在catch的最後乙個分支,使用throw語法,向上扔。

7)異常機制與函式機制互不干涉,但捕捉的方式是基於型別匹配。捕捉相當於函式返回型別的匹配,而不是函式引數的匹配,所以捕捉不用考慮乙個拋擲中的多種資料型別匹配問題

8)異常捕捉嚴格按照型別匹配

異常捕捉的型別匹配之苛刻程度可以和模板的型別匹配媲美,它不允許相容型別的隱式轉換,比如,拋擲char型別用int型就捕捉不到

建構函式沒有返回型別,無法通過返回值來報告執行狀態,所以只通過一種非函式機制的途徑,即異常機制,來解決建構函式的出錯問題。

異常介面宣告

1)為了加強程式的可讀性,可以在函式宣告中列出可能丟擲的所有異常型別,例如:

void func() throw (a, b, c , d); //這個函式func()能夠且只能丟擲型別a b c d及其子型別的異常。

2)如果在函式宣告中沒有包含異常介面宣告,則次函式可以拋擲任何型別的異常,例如:

void func();

3)乙個不拋擲任何型別異常的函式可以宣告為:

void func() throw();

4) 如果乙個函式丟擲了它的異常介面宣告所不允許丟擲的異常,unexpected函式會被呼叫,該函式預設行為呼叫terminate函式中止程式。

嵌入式c 軟體開發筆記第三講

c 繼承 重用 組合 has a a類裡含有b類的成員 繼承 is a class 派生類名 繼承方式 基類名 繼承是使用已經編寫好的類來建立新類,新的類具有原有類的所有屬性和操作,也可以在友元類的基礎上做一些修改和增補。新類稱為派生類或子類,原有類稱為基類或父類 派生類是基類的具體化 繼承規則 公...

嵌入式軟體開發流程

1 嵌入式軟體開發流程在整個流程中,使用者首先需要建立工程並對工程做初步的配置,包括配置處理器和配置除錯裝置。編輯工程檔案,包括自己編寫的彙編和c語言源程式,還有工程編 譯時需要編寫的鏈結指令碼檔案,除錯過程中需要編寫儲存區映像檔案和命令指令碼檔案,以及上電復位時的程式執行入口的啟動程式檔案。對後四...

嵌入式軟體開發之我見

自己從事嵌入式系統開發有好多年了,在此想與大家分享我對於嵌入式開發的一點心得與體會。先大致說一說我的工作經歷。97年畢業後做了兩年的電氣與電子設計與開發,這一時期,我做過電路原理圖的設計和pcb板的設計。從99年開始,我進入了軟體行業。第一次做嵌入式開發是在2000年,在隨後的六年多的時間裡,我差不...