版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
.@;C語言編程規(guī)范說明書編寫人:編寫日期:審批人:審批日期:當(dāng)前版本:文件編號(hào):
目錄TOC\o"1-3"\h\z第一章引言 1第一節(jié)編寫目的 11.1.1作用 11.1.2預(yù)期讀者 1第二節(jié)編寫背景 11.2.1文件名稱及版本號(hào) 11.2.2任務(wù)提出者 11.2.3任務(wù)承接者及實(shí)施者 11.2.4使用者 11.2.5與其它文件的關(guān)系 1第二章UNIX下C程序編碼規(guī)范 2第一節(jié)程序的構(gòu)成 22.1.1C程序要素 22.1.2C程序構(gòu)成舉例 2第二節(jié)源文件的命名規(guī)則及構(gòu)成 32.2.1文件擴(kuò)展名 32.2.2文件頭的注釋 42.2.3源文件的構(gòu)成 42.2.4文件分類存放: 4第三節(jié)函數(shù)命名規(guī)則及構(gòu)成 42.3.1函數(shù)命名: 42.3.2函數(shù)頭的注釋 42.3.3函數(shù)體的書寫格式 52.3.4函數(shù)返回 6第四節(jié)語句的書寫格式 62.4.1SWITCH語句的書寫格式 62.4.2IF語句的書寫格式 62.4.3WHILE語句的書寫格式 62.4.4DO語句的書寫格式 72.4.5FOR語句的書寫格式 72.4.6函數(shù)的書寫格式 7第五節(jié)常量變量及庫表結(jié)構(gòu)命名 72.5.1常量命名 72.5.2變量命名 7第六節(jié)程序的變更格式 82.6.1程序的更改 82.6.2程序版本的修改 9第七節(jié)其他格式 92.7.1條件編譯語句的使用 92.7.2有關(guān)內(nèi)嵌SQL語句的規(guī)范 9第八節(jié)函數(shù)例程 10第九節(jié)Makefile文件例程 11易聯(lián)通(PowerLink3.0)編程規(guī)范說明書V1.0聯(lián)想(北京)有限公司第12頁第一章引言第一節(jié)編寫目的1.1.1作用為使項(xiàng)目在軟件開發(fā)過程中源代碼的編寫和管理規(guī)范化,使源代碼可讀性好、兼容性好,易維護(hù)等,特制定如下規(guī)范,并要求全體開發(fā)人員遵循。編程規(guī)范書是根據(jù)多個(gè)項(xiàng)目開發(fā)經(jīng)驗(yàn)及部門其他項(xiàng)目編程規(guī)范書的基礎(chǔ)上。它是編程階段程序編寫的指導(dǎo)性文件。1.1.2預(yù)期讀者本文檔的閱讀對(duì)象是本項(xiàng)目軟件開發(fā)人員、軟件測(cè)試人員、軟件維護(hù)人員,也供其他項(xiàng)目編程參考。第二節(jié)編寫背景1.2.1文件名稱及版本號(hào)1.2.2任務(wù)提出者綜合前置平臺(tái)總體設(shè)計(jì)組1.2.3任務(wù)承接者及實(shí)施者王華,徐戟1.2.4使用者預(yù)期讀者,也供有關(guān)領(lǐng)導(dǎo)審閱1.2.5與其它文件的關(guān)系作為總體設(shè)計(jì)中代碼設(shè)計(jì)的附錄文件
第二章UNIX下C程序編碼規(guī)范本章定義UNIX下C語言編碼的規(guī)范,鑒于UNIX是一組相似的操作系統(tǒng)的集合,本節(jié)內(nèi)容適用于X86上SCOUNIX、RS6000AIX、Linux等操作系統(tǒng)下的C和ESQL/C編程。第一節(jié)程序的構(gòu)成2.1.1C程序要素C語言程序是由各種說明和定義組成。具體地說,C程序的要素包括∶①包含文件說明 #include<...>#include“…”②常數(shù)定義 #define...③宏定義 #define...④類型說明 typedef...⑤外部變量說明 extern ...⑥全局變量定義⑦外部函數(shù)引用說明⑧內(nèi)部函數(shù)引用說明⑨函數(shù)描述2.1.2C程序構(gòu)成舉例下面舉例說明各種成分的結(jié)構(gòu)和形式。 /**************************************************************** * 包含文件說明 ****************************************************************/ #include<stdio.h> /**************************************************************** * 常數(shù)定義 ****************************************************************/ /*ErrorCode定義*/ #defineERR_FILEIO (-1) /*fileI/Oerror */ #defineERR_SYS (-2) /*systemserviceerror */ #defineERR_MALLOC (-3) /*memoryallocationerror */ #defineERR_PARAMETER (-4) /*parametererror */ /*StatusCode定義*/ #defineSTS_IDLE 1 /*idle */ #defineSTS_READY 2 /*ready */ #defineSTS_RUN 3 /*running */ #defineSTS_STOP 4 /*stop */ /***************************************************************** * 宏定義 ****************************************************************/ #defineADD(x,y) ((x)+(y)) /**************************************************************** * 類型定義 ****************************************************************/ typedefintegerlong; structabc { intiA; /* ... */ intiB; /* ... */ intiC; /* ... */ }; /**************************************************************** * 外部變量說明 ****************************************************************/ externintegerg_Xyz; /* ... */ externshortg_Abc; /* ... */ /**************************************************************** * 全局變量定義 ****************************************************************/ int g_CommandData; /* ... */ /**************************************************************** * 函數(shù)引用說明 ****************************************************************/ externintWIN_GetLine(); externintSomeFunc(); intMyFunc1(); intMyFunc2(); /**************************************************************** * 函數(shù)描述 ****************************************************************/ intMyFunc(intargc,char*argv[]) {}第二節(jié)源文件的命名規(guī)則及構(gòu)成2.2.1文件擴(kuò)展名*.h 用于記載說明、定義的源文件*.c 用于記載C程序描述的源文件*.ec 用于記載C程序和Informix數(shù)據(jù)庫處理的源文件2.2.2文件頭的注釋/****************************************************************** 文件名 : FileName* 文件功能 : Function* 編程者 : XxxxxMmmmmm* 初作時(shí)間 : OriginalTime * 版本 : 1.0* —————————————————————————————— * 時(shí)間 修改者 注釋 * 1998/09/29 xxxx 初期作成 * 1998/10/04 yyyy 功能追加/修改*****************************************************************/2.2.3源文件的構(gòu)成關(guān)聯(lián)性很強(qiáng)的函數(shù)、變量應(yīng)集中在同一源文件中描述。源文件中共同的定義和說明應(yīng)集中在一個(gè)頭文件中描述。一個(gè)源文件的大小一般應(yīng)盡量控制在2000行以內(nèi)。2.2.4文件分類存放:建議按如下目錄存放文件:($home)/src: 存放系統(tǒng)程序源代碼;($home)/bin: 存放系統(tǒng)可執(zhí)行文件;($home)/etc: 存放系統(tǒng)配置文件;($home)/log: 存放系統(tǒng)運(yùn)行記錄文件;第三節(jié)函數(shù)命名規(guī)則及構(gòu)成2.3.1函數(shù)命名:自編函數(shù)應(yīng)當(dāng)與系統(tǒng)函數(shù)、標(biāo)準(zhǔn)函數(shù)區(qū)分開來,以便讀者從函數(shù)名上就可以區(qū)分出是否為自編函數(shù)。建議給可分類的函數(shù)加前綴。函數(shù)描述的每個(gè)單詞首字母大寫其余字母小寫,單詞之間直接連接,不加下劃線。intPUB_PrintReset(void); /*公共函數(shù)*/intPRT_PrintLine(void); /*打印函數(shù)*/intPrintReset(void); /*一般函數(shù)*/2.3.2函數(shù)頭的注釋函數(shù)頭的注釋里應(yīng)包括:函數(shù)名、功能、作者、參數(shù)說明、完成日期和維護(hù)時(shí)間,維護(hù)者,維護(hù)簡(jiǎn)要說明。調(diào)用的調(diào)用自定義函數(shù)、全局變量盡量寫清楚,程序的處理流程比較復(fù)雜可在注釋里簡(jiǎn)單闡述。還可以有其他需要說明的欄目。/****************************************************************** 函數(shù)名 : FunctionName* 函數(shù)功能: FunctionFunction* 編程者: XxxxMmmm* 輸入?yún)?shù): char*sDataStream -DatasSendtoPrinter* intiDataLen -LengthofSendDatas* charcPrnDev -0x01Printercomponent;* -0x02Featurecomponent;* char*sDevStatus -DeviceStatusReadFromPrinter* 輸出參數(shù):* 返回值: * 調(diào)用自定義函數(shù): Callself-definedFunctionList* 處理概要 : Process* 全局變量: ExternVariableandMeaning* 修改的全局變量:UpdateExternVariable* 完成時(shí)間: 1998-04-17* 最后修改時(shí)間: 1998-04-17*****************************************************************/2.3.3函數(shù)體的書寫格式為了使程序具有良好的可讀性,必須對(duì)語句的書寫格式及空格、空行的應(yīng)用進(jìn)行了明確的規(guī)定。(1)每個(gè)函數(shù)不應(yīng)太長,建議在300行以內(nèi);(2)“{”和“}”要分別占一行,并且對(duì)齊;(3)函數(shù)內(nèi),實(shí)現(xiàn)同一功能的語句與前后其他語句用空行分開,便于閱讀;(4)不建議寫長語句,以便程序的閱讀和輸出;(5)程序的相鄰層次的語句之前的留空個(gè)數(shù)一般為一個(gè)TAB鍵,編輯器中一個(gè)TAB鍵設(shè)置為四個(gè)空格。(6)在程序行末的注釋最好對(duì)齊;(7)注釋必須以“/*......*/”括起來,不可以用“//”,主要目的是保證程序的可移植性;(8)程序里,表達(dá)式之間應(yīng)用空格,以分隔清楚;(9)盡量不用難理解的語句。(10)如果一對(duì){}中間的語句超過20行,結(jié)束的}符號(hào)要求指出起始{的位置。(11)strcmp,memcmp要用==0,來表示相等。intTest(intc_argc,char*c_argv[]){inti; /*變量說明*//*本段程序說明*/for(i=0;i<c_argc;i++){ /**/if(strcmp(c_argv[i],"display")==0){ /**/statemeents;}statemeents;}InitialSomething(); /**/}2.3.4函數(shù)返回函數(shù)返回一般都為整型。如果用返回值表示結(jié)果時(shí),返回值為0,表示函數(shù)執(zhí)行正常;返回值小于0,表示函數(shù)執(zhí)行錯(cuò)誤。第四節(jié)語句的書寫格式2.4.1SWITCH語句的書寫格式(case和switch差兩列,語句和case差兩列)switch(ch){case1: /*注釋*/ statements; break;case2: /*注釋*/ statements; break;default: /*注釋*/ statements; break;}2.4.2IF語句的書寫格式if(條件){ /*注釋*/statements;}elseif(條件) { /*注釋*/statements;}else { /*注釋*/ statements;}2.4.3WHILE語句的書寫格式while(條件){ /*注釋*/statements;}2.4.4DO語句的書寫格式do{statements;}while(條件); /*注釋*/2.4.5FOR語句的書寫格式for(..;..;..){ /*注釋*/statements;}2.4.6函數(shù)的書寫格式intfunc(intx,char*y){ intp,q; /*注釋*//*注釋*/ statements;}第五節(jié)常量變量及庫表結(jié)構(gòu)命名2.5.1常量命名常量包括宏定義和自定義類型,常量名必須大寫。#define NUL 0typedefstruct{statements;}MYSTRU;2.5.2變量命名變量應(yīng)盡量按它所表示的內(nèi)容來命名,且變量名的長度要合適,最好為3~15個(gè)字符,循環(huán)變量可以用ijk等單個(gè)字母表示。如果變量名由幾個(gè)單詞表示,則單詞首字母大寫。全局變量加前綴g_,參數(shù)加前綴c_。intg_iPrnStat; /*全局變量*/intc_iPrnStat; /*函數(shù)參數(shù)*/charcPrnStat; /*局部變量*/根據(jù)“匈牙利命名法”,將一個(gè)變量名由以下幾部分構(gòu)成:前綴描述符+名稱其中,前綴描述符說明標(biāo)識(shí)符的類型,用小寫字母,名稱說明標(biāo)識(shí)符的作用,從變量名中我們可以明白,該變量是整型(int),表示字符串的長度。前綴描述符的定義如下表所示:序號(hào)數(shù)據(jù)類型前綴描述符CharcunsignedcharucIntiShortshLonglFloatfBooleanbHandlehUnsigneduPointerpDoubled函數(shù)指針pfStructstArrayaVoidvUnsignedShortus17.以0結(jié)尾的字符數(shù)組acz18以0結(jié)尾的字符指針pcz19.FILE*fp20.二維指針pp21.二維數(shù)組aa22.系統(tǒng)通過typedef定義的整數(shù)t23.typedef定義的類型T第六節(jié)程序的變更格式2.6.1程序的更改文件提交以后,程序的修改須按以下格式進(jìn)行。(1)在文件頭的注釋中進(jìn)行登記* ——————————————————————————————* 時(shí)間 修改者 注釋* 1998/09/29 xxxx 初期作成 * 1998/10/04 yyyy 修改內(nèi)容1* 1998/10/09 zzzz 修改內(nèi)容2*****************************************************************/(2)段落刪除/*deletedbyXY1998/10/12*/ 盡量用/**/來注釋,如果實(shí)在需要用條件編譯來封住一段程序,用以下風(fēng)格:#ifdefDELETE001所需刪除的段落#endif/*endifDELETE001*/(3)段落增加/*addedbyXY1998/10/12begin*/所需增加的段落/*addedbyXY1998/10/12end */(4)段落修改 如果是大段需要修改則用下面方法:/*modifieddelbyXY1998/10/12beginmodifieddelbyXY1998/10/12end*//*modifiedaddbyXY1998/10/12begin*//*modifiedaddbyXY1998/10/12end*/或者 #ifdefMOD_DEL_001 #endif/*endifMOD_DEL_001*//*modifiedaddbyXY1998/10/12begin*//*modifiedaddbyXY1998/10/12end*/如果只有一兩行修改,則直接按下面進(jìn)行:/*modifiedbyXY1998/10/12begin*//*old*/new/*modifiedbyXY1998/10/12end*/原則上程序修改后要在段落旁邊加注修改原因。2.6.2程序版本的修改程序初次提交,版本號(hào)為1.0。程序以后每次修改,都要在程序里標(biāo)示,提交時(shí)根據(jù)改動(dòng)大小,版本號(hào)升級(jí)。當(dāng)程序穩(wěn)定后,再次提交可將修改后的不必要的程序及其標(biāo)示、注釋刪除。第七節(jié)其他格式2.7.1條件編譯語句的使用使用調(diào)試時(shí),調(diào)試語句應(yīng)寫在#ifdefDEBUG和#endif之間,這樣,只需簡(jiǎn)單地改變編譯命令行參數(shù)就可以刪除或使用調(diào)試語句。與操作系統(tǒng)或開發(fā)環(huán)境有關(guān)的部分應(yīng)當(dāng)寫在條件編譯語句之中,這樣便于系統(tǒng)的移植。例如:在制作可用SCOUNIX和AIX下軟件時(shí),依賴于SCOUNIX的部分應(yīng)寫在#ifdefSCO和#endif之間,而依賴于AIX的部分應(yīng)寫在#ifdefAIX和#endif之間。 2.7.2有關(guān)內(nèi)嵌SQL語句的規(guī)范在應(yīng)用中,常常需要內(nèi)嵌SQL語句完成對(duì)數(shù)據(jù)庫的訪問,使用時(shí)應(yīng)遵循如下規(guī)范:所有SQL語句的開頭必須使用“EXECSQL”,以同一般C語句區(qū)別;主變量前必須使用“:”。宣告必須用下面形式EXECSQLBEGINDECLARESECTION;EXECSQLENDDECLARESECTION;游標(biāo)主變量要在FETCH時(shí)指定,不要在declare時(shí)指定第八節(jié)函數(shù)例程/******************************************************************函數(shù)名:ConvertPoolToMsgFromMsg*函數(shù)功能:從數(shù)據(jù)存儲(chǔ)池打包*編程者:zfx*輸入?yún)?shù):ptMessagec_pMessageBuf字符串存儲(chǔ)地址指針 char*c_iMessageBufLen字符串長度intc_iMessageBufLen字符串格式代號(hào)*輸出參數(shù) :*返回值 :<0失敗>0包長度*調(diào)用自定義函數(shù):*處理概要:*全局變量:*修改的全局變量:*完成時(shí)間:2002/02/02*最后修改時(shí)間:2002/02/02*****************************************************************/intConPoolToEucpRecvDefMsg(ptMessagec_stMessage,char*c_pMessageBuf,intc_iMessageBufLen){ intiTotalLen=0; intiSysHeadLen=0; characzSysHead[129]; intiPubHeadLen=0; characzPubHead[129]; intiRecvDataLen=0; characzRecvData[4097]; memset(aczRecvData,0,sizeof(aczRecvData)); iRecvDataLen=PutRecvData(aczRecvData,c_stMessage); if(iRecvDataLen<0) { returniRecvDataLen; } iTotalLen=iTotalLen+iRecvDataLen; memset(aczPubHead,0,sizeof(aczPubHead)); iPubHeadLen=PutRecvPubHead(aczPubHead); if(iPubHeadLen<0) { returniPubHea
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 互聯(lián)網(wǎng)公司實(shí)習(xí)生協(xié)議
- 歐式酒店羅馬柱施工合同
- 照明工程人工費(fèi)施工合同
- 會(huì)計(jì)實(shí)習(xí)生聘用合同
- 企業(yè)社會(huì)責(zé)任績(jī)效
- 糖尿病的健康管理方案設(shè)計(jì)
- 工程項(xiàng)目合同質(zhì)量管理情況記錄
- 電子產(chǎn)品測(cè)試顧問協(xié)議
- 工程施工轉(zhuǎn)讓合同協(xié)議
- 2022年大學(xué)工程力學(xué)專業(yè)大學(xué)物理下冊(cè)期中考試試題B卷-附解析
- 幼兒園大班繪本閱讀游戲《糊涂熊隊(duì)劃不快》課件
- 前置胎盤的診斷與處理指南(2023年版)
- 北師大版四年級(jí)書法(上)全冊(cè)教案
- 哈爾濱工業(yè)大學(xué)介紹
- 現(xiàn)代漢語漢字PPT
- 執(zhí)業(yè)藥師再次注冊(cè)申請(qǐng)表
- 腸易激綜合征的診斷治療課件
- 基于核心素養(yǎng)的小學(xué)語文教學(xué)評(píng)一體化課堂實(shí)踐研究課題研究階段性工作小結(jié)
- 供應(yīng)商調(diào)查表格式
- 民警職務(wù)晉升考察材料范文四篇
- PC裝配式結(jié)構(gòu)施工監(jiān)理實(shí)施細(xì)則
評(píng)論
0/150
提交評(píng)論