国产毛片a精品毛-国产毛片黄片-国产毛片久久国产-国产毛片久久精品-青娱乐极品在线-青娱乐精品

一線研發(fā)之聲:嵌入式C編程經(jīng)驗(yàn) 之 請(qǐng)寫可移植性高的模塊

發(fā)布時(shí)間:2012-2-21 14:14    發(fā)布者:絕對(duì)好文
關(guān)鍵詞: C編程 , c語言 , SedateFire , 移植
/********************************************************************
* Filename:一線研發(fā)之聲:嵌入式C編程經(jīng)驗(yàn) 之 請(qǐng)寫可移植性高的模塊
* Author:SedateFire E-mail:SedateFire@126.com
* Version:1.000 Time: 2012-01-05
* key: 嵌入式  可移植性  模塊化  依賴
********************************************************************/

我想你或許有這樣的經(jīng)驗(yàn),你要實(shí)現(xiàn)的一個(gè)模塊同事已經(jīng)實(shí)現(xiàn)了。老板發(fā)話說:你復(fù)用他的代碼啊,半天給我搞定。于是你拷過來編譯一下,幾乎是必然的,會(huì)有error有warning,一看,哇,原來依賴了這么多外部的東東。于是你開始著手修改它,如果模塊小,自然三兩下搞定。如果是個(gè)大的模塊要復(fù)用,一下彈出幾百個(gè)編譯錯(cuò)誤報(bào)警,我想你邊修改心里也邊罵娘。

我靠,這個(gè)蜂鳴器控制函數(shù)為何要去判斷當(dāng)前在作什么應(yīng)用?!

我靠,這么多缺失的include文件,沒有拷過來嗎?

我靠,這個(gè)函數(shù)是什么東東,注釋明顯對(duì)不上,還判斷賦值了一堆全局變量。

我靠,這個(gè)if處理了,那else呢,哪里去了?這是什么跟什么啊。

我靠,通通刪掉干掉,自己加班偷偷重寫好了。

什么!老板在催了,我靠靠靠啊…

想必你有共鳴了......

那么如何實(shí)現(xiàn)可移植性高的代碼呢,我就先寫幾點(diǎn)吧,有些晚了,準(zhǔn)備睡覺了

1.擅用define。請(qǐng)把“裸露”的常量,用短小又信息準(zhǔn)確的宏定義起來,務(wù)必全大寫。常量的宏定義要大寫,我會(huì)在后期關(guān)于代碼規(guī)范的主題文章分析。請(qǐng)把設(shè)備驅(qū)動(dòng)的io,用define定義分離出來。當(dāng)然,還有許多妙用,宏定義簡直是移植旅行必備佳品。待我后期再整理下思路吧。

2.抽像出平臺(tái)依賴嚴(yán)重的代碼。比如訪問一個(gè)特定mcu寄存器,開關(guān)中斷,清狗指令,中斷寫法等等。

3.如果可以,我希望你的.c檔中包含的.h檔盡可能的少。這樣在移植的時(shí)候,你只要看包含了那些.h檔,你就知道該模塊大概依賴了其他哪些模塊。我知道,大多數(shù)的程序員都喜歡在.c檔的文件頭僅有一個(gè)

#include "includes.h"

而在includes.h 中包羅萬象,這是原罪!當(dāng)然,要一個(gè)蘿卜一個(gè)坑地梳理清楚.c與.h檔的關(guān)系,需要長期的工作經(jīng)驗(yàn),尤其在編譯條件錯(cuò)綜復(fù)雜時(shí),操作起來的確痛苦且容易出錯(cuò),但其實(shí)這已經(jīng)預(yù)示了你系統(tǒng)架構(gòu)的某種不合理。

如果沒有足夠的經(jīng)驗(yàn),那么我建議你,先在設(shè)備層的.c檔盡量包含盡可能少的.h檔。然后把設(shè)備層的.h檔放在includes.h中,給應(yīng)用層使用。

3. 打造自定義庫,這個(gè)準(zhǔn)備設(shè)專題講解。

4. 通信數(shù)據(jù)統(tǒng)一是大端的,內(nèi)部應(yīng)用代碼統(tǒng)一用數(shù)值說話,和大小端無關(guān),不要亂糟糟的一片胡寫蠻纏。少用union,發(fā)送數(shù)據(jù)時(shí)統(tǒng)一用單字節(jié)移位發(fā)出去,接收時(shí)用移位收進(jìn)來。犧牲了效率,但提高了可移植性。在51中也許不大現(xiàn)實(shí),但在未來M3的大趨勢(shì)下,效率是可以犧牲的。

5.欲知后事如何,請(qǐng)聽下回分解....
本文地址:http://www.qingdxww.cn/thread-86287-1-1.html     【打印本頁】

本站部分文章為轉(zhuǎn)載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀點(diǎn)和對(duì)其真實(shí)性負(fù)責(zé);文章版權(quán)歸原作者及原出處所有,如涉及作品內(nèi)容、版權(quán)和其它問題,我們將根據(jù)著作權(quán)人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評(píng)論 登錄 | 立即注冊(cè)

廠商推薦

  • Microchip視頻專區(qū)
  • 使用SAM-IoT Wx v2開發(fā)板演示AWS IoT Core應(yīng)用程序
  • 使用Harmony3加速TCP/IP應(yīng)用的開發(fā)培訓(xùn)教程
  • 集成高級(jí)模擬外設(shè)的PIC18F-Q71家族介紹培訓(xùn)教程
  • 探索PIC16F13145 MCU系列——快速概覽
  • 貿(mào)澤電子(Mouser)專區(qū)

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權(quán)所有   京ICP備16069177號(hào) | 京公網(wǎng)安備11010502021702
快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线一区二区在线 | 可以免费看黄网站 | 99热自拍| 日本亚洲国产精品久久 | 天空之城动漫在线观看完整版免费 | 亚洲国产欧美日韩一区二区三区 | 亚洲国产成人最新精品资源 | 日韩毛片免费观看 | 日本黄色高清网站 | 在线观看国产精品一区 | 伊人色婷婷综在合线亚洲 | 欧美a在线视频 | 赘婿动画在线观看免费完整版 | 99热综合在线 | 免费一级在线 | 日韩中文字幕精品视频在线 | 91高清视频| 青青青爽国产在线视频 | 亚洲国产成人欧美激情 | 国产精品视频久久久久久 | 91黄视频在线观看 | 欧美在线播放 | 超级乱淫视频播放日韩 | 久久笫一福利免费导航 | 国产一级做a爰片久久毛片男 | 四十路在线 | 欧美亚洲国产日韩综合在线播放 | 天天草天天草 | 高清毛片在线看高清 | 韩国一级| 亚洲一区二区三区四 | 看一级毛片免费观看视频 | 色综合久久久久久久久五月性色 | 天天操精品 | 日本一区二区三区四区视频 | 国产日韩欧美视频在线观看 | 欧美日本免费一区二区三区 | 欧美成人aaaa免费高清 | h版肉动漫在线观看网站 | 精品日本一区二区 | 男女午夜免费视频 |