Unix(Linux)C程式設計問題精粹(轉)

ba發表於2007-08-11
Unix(Linux)C程式設計問題精粹(轉)[@more@]對於C語言,有人認為它已經落伍了.對於這個問題,仁者見仕,智者見智.的確,C++比C有更強大的諸多優勢.但C++是建立在C之上的.這也是Herbert Schildt所著的<>在全世界暢銷不衰的原因.更何況,要深入學習LINUX就必需要有相當的C功底.(這也是我搜集整理本文的根由:-)
現結合個人在程式設計中的體會,為使新手少走彎路,為老手錦上添花,因此無論你是使用C或C++程式設計,也無論你是程式設計的初學者還是成熟的專業人員,均會發現,本文將會對你有所收益.當然,我盡力寫得清晰易懂,又不古板.

=======================================
|版權宣告:你可以自由複製與分發本文件 |
|如果你要修改本文件或提出更好建議,請 |
|先通知文章的作者。而不要僅在公告欄中 |
|貼出。因為作者可能漏看。無論如何,都 |
|須保留本宣告。 |
| |
| |
| |

=======================================

文章目錄
第一章:前言
第二章:約定
第三章:開始任務
第四章:使用lint
第五章:使用make
第六章:優質無錯程式設計
第七章:除錯技術
第八章:其它更好的文件

第一章:前言


你可以在forum.linuxaid.com.cn上獲得此帖的文字.而其HTML版本正在趕製之中......
如果你是在一個月之後看到本文,那麼此文或許已經更新了:-)


第二章:約定

專業的源程書寫風格.
先看看世界級C大師的源程書寫風格.如 Steve Maguire 就有許多不錯的建議.

[]倡導使用易於理解的"匈牙利式"的命名約定.
所有的字元變數均以ch開始; 如: char ch_****;
所有的位元組變數均冠以b; 如: byte b_****;
所有的長字變數均冠以l; 如: long l_****;
所有的指標變數均冠以P; 如: char *p_ch_****;
建議型別派生出的基本名字之後加上一個以大寫字母開頭的"標籤".如:
分析 char **ppchMydata;
其讓人一眼就能看出它代表一個指向字元指標Mydata的指標.
"匈牙利式"命名的最大不足是難念:-(( .但相對於不是總統演講稿的C源程來說,這又算得了什麼?想想看以下的資料命名:
char a,b,c;
long d,e,f;
.
.
.
(反正我是不會再看下去了...)

[]倡導規範書寫.
如果你思如泉湧,而不去也不及顧慮書寫格式,那也沒關係.在將其交出去之前,用cb命令格式化你的源程.雖然源程的格式不會影響到你編譯結果的正確性,但切記,能讓其他的程式設計師能輕鬆地閱讀它.否則沒人會理你的.
關於cb命令的更多用法,可以用man cb來參考其手冊頁.
當然除了cb之外,還有更多更好的.但cb是你在任何UNIX(LINUX)上都找得到的.更何況它並不差.


第三章:開始任務

開始任務之前,先做個深呼吸!



[]其他文件你準備好了嗎?
你是不是除了C源程之外一無所有了嗎?兵馬未動,糧草先行.你必須先清楚該程式所要完成的功能.在開始寫程式之前,對程式的功能應有規範說明.書寫規範書和確知程式功能的一個方法是先編寫相應的操作手冊.如果你是一人單幹,勸你首先寫需求書.切記切記,這對你意味著事半功倍的大好事.
一個例項:我計劃為本行的信貸子功能模組打一個補丁.我用10周的時間用來寫規劃書,需求書,操作流程,使用說明等等文件.之後用2周的時間編寫程式,在初步測試(1周)後遞交給各信貸部門測試使用.然後根據反饋的資訊再更改相應文件,並根據文件修改源程.6個月後釋出正式版.

[]一定該遵循ANSI標準嗎?
如果你僅使用ANSI的標準首標檔案,恭喜你,你的程式有著全世界範圍內的廣泛支援和相容.光明無限.但你必須在通用與專用之間做出取捨,對不起,我幫不了你.
我的原則是:核心用ANSI,介面按需而取.這樣在轉換平臺時僅需另編使用者介面而已.實用至上嘛.
附:ANSI 標準C標頭檔案





來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947579/,如需轉載,請註明出處,否則將追究法律責任。

相關文章