找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3780|回復(fù): 0
收起左側(cè)

編寫優(yōu)質(zhì)嵌入式C程序-裸機環(huán)境(76頁word文檔)極力推薦

[復(fù)制鏈接]
ID:230787 發(fā)表于 2017-9-4 08:56 | 顯示全部樓層 |閱讀模式
前言:這是一年前我為公司內(nèi)部寫的一個文檔,旨在向年輕的嵌入式軟件工程師們介紹如何在裸機環(huán)境下編寫優(yōu)質(zhì)嵌入式C程序。感覺是有一定的參考價值,所以拿出來分享,拋磚引玉。

摘要:本文首先分析了C語言的陷阱和缺陷,對容易犯錯的地方進行歸納整理;分析了編譯器語義檢查的不足之處并給出防范措施,以Keil MDK編譯器為例,介紹了該編譯器的特性、對未定義行為的處理以及一些高級應(yīng)用;在此基礎(chǔ)上,介紹了防御性編程的概念,提出了編程過程中就應(yīng)該防范于未然的多種措施;提出了測試對編寫優(yōu)質(zhì)嵌入式程序的重要作用以及常用測試方法;最后,本文試圖以更高的層次看待編程,討論一些通用的編程思想。
1.    簡介
2.    C語言特性
1.    1處處都是陷阱
1.    11 無心之過
2.    12 數(shù)組下標
3.    13 容易被忽略的break關(guān)鍵字
4.    14 意想不到的八進制
5.    15指針加減運算
6.    16關(guān)鍵字sizeof
7.    17增量運算符和減量運算符
8.    18邏輯與和邏輯或的陷阱
9.    19結(jié)構(gòu)體的填充
2.    2不可輕視的優(yōu)先級
3.    3隱式轉(zhuǎn)換
3.    編譯器
1.    1不能簡單的認為是個工具
2.    2不能依賴編譯器的語義檢查
1.    21莫名的死機
2.    22不起眼的改變
3.    23 難查的數(shù)組越界
4.    24神奇的volatile
5.    25局部變量
6.    26使用外部工具
3.    3你覺得有意義的代碼未必正確
1.    31常見的未定義行為
2.    32如何避免C語言未定義行為
4.    4 了解你的編譯器
1.    41編譯器的一些小知識
2.    42初始化的全局變量和靜態(tài)變量的初始值被放到了哪里
3.    43在C代碼中使用的變量編譯器將他們分配到RAM的哪里
4.    44默認情況下棧被分配到RAM的哪個地方
5.    45 有多少RAM會被初始化
6.    46 MDK編譯器如何設(shè)置非零初始化變量
4.    防御性編程
1.    1具有形參的函數(shù)需判斷傳遞來的實參是否合法
2.    2仔細檢查函數(shù)的返回值
3.    3 防止指針越界
4.    4 防止數(shù)組越界
5.    5 數(shù)學(xué)算數(shù)運算
1.    51除法運算只檢測除數(shù)為零就可靠嗎
2.    52檢測運算溢出
3.    53檢測移位
6.    6如果有硬件看門狗則使用它
7.    7關(guān)鍵數(shù)據(jù)儲存多個備份取數(shù)據(jù)采用表決法
8.    8對非易失性存儲器進行備份存儲
9.    9軟件鎖
10.    10通信
11.    11開關(guān)量輸入的檢測確認
12.    12開關(guān)量輸出
13.    13初始化信息的保存和恢復(fù)
14.    14陷阱
15.    15阻塞處理
5.    測試再測試
1.    1使用硬件調(diào)試器測試
2.    2有些缺陷很難纏
1.    21簡單易用的調(diào)試函數(shù)
2.    22對調(diào)試函數(shù)進一步封裝
6.    編程思想
1.    1編程風(fēng)格
1.    11 整潔的樣式
2.    12清晰的命名
3.    13恰當(dāng)?shù)淖⑨?br /> 2.    2數(shù)據(jù)結(jié)構(gòu)
7.    總結(jié)和閱讀書目
1.    1關(guān)于語言特性
2.    2關(guān)于編譯器
3.    3關(guān)于防御性編程
4.    4關(guān)于編程思想
0.png 0.png

完整的word格式文檔51黑下載地址:
編寫優(yōu)質(zhì)嵌入式C程序.docx (339.55 KB, 下載次數(shù): 80)


回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表