資源描述:
《C編程問(wèn)題精粹 UnixC編程問(wèn)題精粹》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫(kù)。
1、C編程問(wèn)題精粹UnixC編程問(wèn)題精粹對(duì)于c語(yǔ)言,有人認(rèn)為它已經(jīng)落伍了.對(duì)于這個(gè)問(wèn)題,仁者見(jiàn)仕,智者見(jiàn)智.的確,c++比c有更強(qiáng)大的諸多優(yōu)勢(shì).但c++是建立在c之上的.這也是herbertschildt所著的<>在全世界暢銷(xiāo)不衰的原因.更何況,要深入學(xué)習(xí)linux就必需要有相當(dāng)?shù)腸功底.(這也是我搜集整理本文的根由:-) 現(xiàn)結(jié)合個(gè)人在編程中的體會(huì),為使新手少走彎路,為老手錦上添花,因此無(wú)論你是使用c或c++編程,也無(wú)論你是程序設(shè)計(jì)的初學(xué)者還是成熟的專(zhuān)業(yè)人員,均會(huì)發(fā)現(xiàn),本文將會(huì)對(duì)你有所收益.當(dāng)然,我盡力寫(xiě)得清晰易懂,又不古板. 我愛(ài)c.(正如世人愛(ài)上帝一樣:-)
2、..第一章:前言 對(duì)于c語(yǔ)言,有人認(rèn)為它已經(jīng)落伍了.對(duì)于這個(gè)問(wèn)題,仁者見(jiàn)仕,智者見(jiàn)智.的確,c++比c有更強(qiáng)大的諸多優(yōu)勢(shì).但c++是建立在c之上的.這也是herbertschildt所著的<>在全世界暢銷(xiāo)不衰的原因.更何況,要深入學(xué)習(xí)linux就必需要有相當(dāng)?shù)腸功底.(這也是我搜集整理本文的根由:-) 現(xiàn)結(jié)合個(gè)人在編程中的體會(huì),為使新手少走彎路,為老手錦上添花,因此無(wú)論你是使用c或c++編程,也無(wú)論你是程序設(shè)計(jì)的初學(xué)者還是成熟的專(zhuān)業(yè)人員,均會(huì)發(fā)現(xiàn),本文將會(huì)對(duì)你有所收益.當(dāng)然,我盡力寫(xiě)得清晰易懂,又不古板. 我愛(ài)c.(正如世人愛(ài)上帝一樣:-).. 你可以在fo
3、rum.linuxaid.com.cn上獲得此帖的文本.而其html版本正在趕制之中......第二章:約定專(zhuān)業(yè)的源程書(shū)寫(xiě)風(fēng)格. 先看看世界級(jí)c大師的源程書(shū)寫(xiě)風(fēng)格.如stevemaguire就有許多不錯(cuò)的建議.[]倡導(dǎo)使用易于理解的"匈牙利式"的命名約定. 所有的字符變量均以ch開(kāi)始; 如: char ch_****; 所有的字節(jié)變量均冠以b; 如: byte b_****; 所有的長(zhǎng)字變量均冠以l; 如: long l_****; 所有的指針變量均冠以p; 如: char *p_ch_****; 建議類(lèi)型派生出的基本名字之后加上一個(gè)以大寫(xiě)字母開(kāi)頭的"
4、標(biāo)簽".如: 分析 char **ppchmydata; 其讓人一眼就能看出它****一個(gè)指向字符指針mydata的指針. "匈牙利式"命名的最大不足是難念:-((.但相對(duì)于不是總統(tǒng)演講稿的c源程來(lái)說(shuō),這又算得了什么?想想看以下的數(shù)據(jù)命名: char a,b,c; long d,e,f;[]倡導(dǎo)規(guī)范書(shū)寫(xiě). 如果你思如泉涌,而不去也不及顧慮書(shū)寫(xiě)格式,那也沒(méi)關(guān)系.在將其交出去之前,用cb命令格式化你的源程.雖然源程的格式不會(huì)影響到你編譯結(jié)果的正確性,但切記,能讓其他的程序員能輕松地閱讀它.否則沒(méi)人會(huì)理你的. 關(guān)于cb命令的更多用法,可以用mancb來(lái)參考其手
5、冊(cè)頁(yè). 當(dāng)然除了cb之外,還有更多更好的.但cb是你在任何unix(linux)上都找得到的.更何況它并不差第三章:開(kāi)始任務(wù) 開(kāi)始任務(wù)之前,先做個(gè)深呼吸![]其他文檔你準(zhǔn)備好了嗎? 你是不是除了c源程之外一無(wú)所有了嗎?兵馬未動(dòng),糧草先行.你必須先清楚該程序所要完成的功能.在開(kāi)始寫(xiě)程序之前,對(duì)程序的功能應(yīng)有規(guī)范說(shuō)明.書(shū)寫(xiě)規(guī)范書(shū)和確知程序功能的一個(gè)方法是先編寫(xiě)相應(yīng)的操作手冊(cè).如果你是一人單干,勸你首先寫(xiě)需求書(shū).切記切記,這對(duì)你意味著事半功倍的大好事. 一個(gè)實(shí)例:我計(jì)劃為本行的信貸子功能模塊打一個(gè)補(bǔ)丁.我用10周的時(shí)間用來(lái)寫(xiě)規(guī)劃書(shū),需求書(shū),操作流程,使用說(shuō)明等等文
6、檔.之后用2周的時(shí)間編寫(xiě)程序,在初步測(cè)試(1周)后遞交給各信貸部門(mén)測(cè)試使用.然后根據(jù)反饋的信息再更改相應(yīng)文檔,并根據(jù)文檔修改源程.6個(gè)月后發(fā)布正式版.[]一定該遵循ansi標(biāo)準(zhǔn)嗎? 如果你僅使用ansi的標(biāo)準(zhǔn)首標(biāo)文件,恭喜你,你的程序有著全世界范圍內(nèi)的廣泛支持和兼容.光明無(wú)限.但你必須在通用與專(zhuān)用之間做出取舍,對(duì)不起,我?guī)筒涣四? 我的原則是:核心用ansi,界面按需而取.這樣在轉(zhuǎn)換平臺(tái)時(shí)僅需另編用戶(hù)界面而已.實(shí)用至上嘛. 附:ansi標(biāo)準(zhǔn)c頭文件 是不是很寒酸?[]再續(xù)前緣? 在得到新任務(wù)之后并在開(kāi)始該新任務(wù)之前應(yīng)馬上回想有哪些是曾經(jīng)擁有的.舊調(diào)重彈
7、遠(yuǎn)比另起爐灶來(lái)的高效與環(huán)保.[]是否該有自已的庫(kù)? 我的答案是應(yīng)該有自已的特色庫(kù),并與ansi兼容.與3.8不同的是,你僅需在源程序之后附上自已的專(zhuān)用庫(kù)就可以了.其次在有了自已的庫(kù)后,源碼會(huì)很精煉的.不用去羨慕別人了吧.[]要學(xué)會(huì)條件編譯.注意你的平臺(tái)特性.(高手的標(biāo)志?) 除非你確定你要寫(xiě)的程序是在某特定的os特定的硬件平臺(tái)而量身定做.否則應(yīng)注意數(shù)據(jù)類(lèi)型的長(zhǎng)度,精度都是不同的,不要想當(dāng)然.有時(shí)甚至是不同的編譯器的差異都要考慮考慮.........(歡迎您來(lái)充實(shí)此處空白)....好了,在任務(wù)中,又有哪些細(xì)節(jié)呢?[]我是不是葛郎臺(tái)? 不要那么吝嗇.在源程序中加
8、入詳盡的注釋以使自己和他人即使在許多年以后仍能讀明白