版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、C 語言工程簡明規(guī)范1. 使用編程規(guī)范的目的編程規(guī)范約定應建立于一項工程之初,且該約定應貫穿整個工程之始終。采用一些規(guī)約有助于提高勞動生產(chǎn)率,并使工程便于。用 C 語言或其他語言編寫程序的方式有很多種,慣用的,好的書寫風格以及他人用的一些好的方法,無非是想力圖達到以下的目的:可移植性好;兼容性好;干凈整齊;易性好;易看懂;簡明扼要;無論采用哪種編程風格,必須在整個工程中采用始終如一的格式。2. 工程組織說明范例工程結(jié)構如下圖:上圖結(jié)構詳細說明:Component_C, Component_H 兩個文件夾用于放置MCU 各模塊代碼和頭文件。Project Settings 為工程文件夾,其下的文
2、件都由 CodeWarrior 自動生成,不建議修改,除非特別需要。Libs 文件夾,主要用于引入庫文件。Frame_C, Frame_H 兩個文件夾用于放置通用代碼文件。比如 type.h 用于類型定義。GeneralFun.c 用于放置一些常用函數(shù)等。Isr.h ,isr.c 文件用于處理中斷程序。而main.c 為主函數(shù)。Include.h為總的頭文件。最后一個為工程說明文件。建議在做工程的時候充分利用好這樣的一個文件,進行工程開發(fā)過程的以及版本升級的。關于構件模塊代碼的詳細說明在范例代碼中,每個構件都由一個.c 程序和.h 的頭文件。3.頭文件包含所有的該構件對外開放的函數(shù)接口的及其調(diào)
3、用說明。用戶只需要查看該頭文件就能知道如何調(diào)用該模塊,那么這個構件就是成功的,用戶不需要看具體的函數(shù)實現(xiàn)過程。同時,頭文件中還可以放置一些與寄存器有關的一些宏定義,這樣在主程序中就可以通過宏進行對構件的地址。或者操作,而不需要用戶一些繁瑣的.c 文件主要是完成對頭文件中。的函數(shù)的實現(xiàn)。以及一些調(diào)用函數(shù)的下面給出部分范例代碼,加深用戶理解:.h 頭文件結(jié)構如下/* 頭部說明,實現(xiàn)功能,構件的一些情況說明 */-*/ 文件名: GPIO.h/ 說 明: GPIO 構件頭文件,包含了GeneralFun.h 文件*/-*#ifndef GPIO_H#define GPIO_H/防止重復定義/1 頭文
4、件#include MC9S08AW60.h #include Type.h/MC9S08AW60 MCU 映像寄存器名定義/類型別名定義/* 與寄存器有關的部分宏定義 */2.1 AW60 端口 #define PORT_A #define PORT_B #define PORT_C #define PORT_D #define PORT_E #define PORT_F#define PORT_G名與偏移地址的對應關系 024681012 /部分代碼已經(jīng)省略/* 函數(shù)接口及其調(diào)用說明 */-*/函數(shù)名: GPIO_Init*/功/參/返/說能: 初始化GPIO數(shù): port:端口名pin:
5、指定端口引腳direction:引腳方向,0=輸入,1=輸出s回: 無明: 無e:初始狀態(tài),0=低電平,1=高電平/-*void GPIO_Init(u8 port,u8 pin,u8 direction,u8 se); /部分代碼已經(jīng)省略#endif.c 文件結(jié)構如下/* 頭部說明,實現(xiàn)功能,構件的一些情況說明 */-*/ 文件名: GPIO.c/ 說 明: GPIO 驅(qū)動程序文件*/-*#include GPIO.h/包含GPIO 頭文件/*調(diào)用函數(shù)*/ /省略,自己根據(jù)需要擴充/* 外部調(diào)用函數(shù)(即頭文件中過的函數(shù))具體實現(xiàn) */-*/函數(shù)名: GPIO_Init/功 能: 初始化GPI
6、O*/參/返/說數(shù): port:端口名 pin:指定端口引腳direction:引腳方向,0=輸入,1=輸出*s回: 無明: 無e:初始狀態(tài),0=低電平,1=高電平/-*void GPIO_Init(u8 port,u8 pin,u8 direction,u8 se)/1.設置引腳方向 if(direction = 1)BSET(PIO_DDR(port);/定義引腳為輸出(相應位為 1)elseBCLR(PIO_DDR(port);/定義引腳為輸入(相應位為 0)/2.設置引腳狀態(tài)if(se = 1)BSET(PIO_PORT(port);/輸出高電平(1)elseBCLR(PIO_PORT
7、(port);/輸出低電平(0) /部分代碼省略/*調(diào)用函數(shù)實現(xiàn) */ /省略4. C 語言編程規(guī)范4.1概述為了提高源程序的質(zhì)量和可性,從而最終提高產(chǎn)品生產(chǎn)力,特編寫此規(guī)范。本標準規(guī)定了程序設計進行程序設計時必須遵循的規(guī)范主要針對單片機編程語言和 08 編譯器而言,包括排版、注釋、命名、變量使用、代碼可測性、程序效率、質(zhì)量保證等內(nèi)容。建議在一個工程或者一個項目中盡量遵循相同的代碼規(guī)范,而不是說你只能擁有一個代碼規(guī)范。4.2命名規(guī)則1)命名基本原則命名清晰明了,有明確含義,使用完整單詞或約定俗成的縮寫。通常,較短的單詞可通過去掉元音字母形成縮寫;較長的單詞可取單詞的頭幾個字母形成縮寫。即見名知
8、意。命名風格要自始至終保持一致。命名中若使用特殊約定或縮寫,要有注釋說明。為了代碼復用,命名中應避免適用與具體項目相關的前綴。應使用英語命名。2)預定義(#define)只使用大寫字母,下劃線和數(shù)字。例如: #defineMAX_LENGTH1宏和常量命名只使用大寫字母,下劃線和數(shù)字。宏和常量用全部大寫字母來命名,詞與詞之間用下劃線分隔。對程序中用到的數(shù)字均應用有意義的枚舉或宏來代替。變量命名變量命名規(guī)則: _類型名稱。例如:/全局變量g_nMaxCount;/函數(shù)體內(nèi)局部變量MyEnumTypeeParsingMode;局部循環(huán)體控制變量優(yōu)先使用 i、j、k 等;局部長度變量優(yōu)先使用 len
9、、num 等;臨時中間變量優(yōu)先使用 temp、tmp 等。類型前綴指針( Poer)p枚舉( Enumeration)e布爾()b浮點( Float)f雙精度( Double)d字符( Char)c結(jié)構( Structure)st其他數(shù)字類型, e.g.byte, (unsigned), (unsigned)long, (unsigned)short, (unsigned) short,(unsigned) long longn范圍前最結(jié)構體的成員變量m_靜態(tài)變量s_全局變量g_局部變量無前綴結(jié)構和類型定義(typedef)按 Camel-Style 方式命名,如ThisIsAnEx枚舉leS
10、tructOrEnumOrTyedef 。避免使用下劃線。按 CamelStyle 方式命名,如 ThisIsAnExleStructOrEnumOrTyedef 。避免使用下劃線。Enum DataSetSeValidModified = 1,InvalidModified = 2,AllDataLoaded = 3函數(shù)命名按 CamelStyle 方式命名, ThisIsAnEx文件命名leMethod。一個文件包含一類功能或一個模塊的所有函數(shù),文件名稱應清楚表明其功能或性質(zhì)。每個.c 文件應該有一個同名的.h 文件作為頭文件。4.3注釋注釋基本原則有助于對程序的閱讀理解,說明程序在做什么
11、,解釋代碼的目的、功能和采用的方法。一般情況源程序有效注釋量在 30左右。 注釋語言必須準確、易懂、簡潔。邊寫代碼邊注釋,修改代碼同時修改相應的注釋,不再有用的注釋要刪除。 匯編和 C 中都用/,取消;不使用段注釋 /* */ (調(diào)試時可用)。文件注釋文件注釋必須說明文件名、項目名稱、函數(shù)功能、創(chuàng)建人、創(chuàng)建日期、版本信息等相關信息。修改文件代碼時,應在文件注釋中修改日期、修改,并簡明此次修改的目的。所有修改必須保持完整。 文件注在文件頂端,用/*/格式包含。 注釋文本每行縮進 4 個空格;每個注釋文本分項名稱應對齊。/*文件名稱:項目名稱:作版說者:本:明:修改:*/3)函數(shù)注釋函數(shù)頭部注釋應
12、包括函數(shù)名稱、函數(shù)功能、參數(shù)、出口參數(shù)等內(nèi)容。必要還可增加作者、創(chuàng)建日期、修改(備注)等相關項目。 函數(shù)頭部注在每個函數(shù)的頂端,用/*/的格式包含。其中函數(shù)名稱應簡寫為 FunctionName(),不加入、出口參數(shù)等信息。/*函數(shù)名稱:函數(shù)功能:參數(shù):出口參數(shù):備 注:*/4)代碼注釋代碼注釋應與被注釋的代碼緊鄰,放在其上方或右方,不可放在下面。如放于上方則需與其上面的代碼用空行隔開。一般少量注釋應該添加在被注釋語句的行尾,一個函數(shù)內(nèi)的多個注釋左對齊;較多注釋則應加在上方且注釋行與被注釋的語句左對齊。通常,分支語句(條件分支、循環(huán)語句等)必須編寫注釋。其程序塊結(jié)束行的右方應加表明該程序塊結(jié)束
13、的標記end of , 尤其在多重嵌套時。例如:/注釋 。nNum = 7;/ 注釋。for(i = 0 ; I nNum; i+)If( i = = 0)/ codeelse/code /end of if(i = 0) / end of for (i)5)變量、常量、宏的注釋同一類型的標識符應集中定義,并在定義之前一行對其共性加以注釋。對單個標識符的注釋加在定義語句的行尾。 全局變量一定要有詳細的注釋,包括其功能、取值范圍、哪些函數(shù)或過程存取它以及存取時的注意事項等。 注釋用/的格式。4.4類型別名定義/8 位無符號數(shù)/ 16 位無符號數(shù)/ 32 位無符號數(shù)/8 位有符號數(shù)/ 16 位有符
14、號數(shù)/ 32 位有符號數(shù)typedef unsigned chartypedef unsigned short typedef unsigned long typedef chartypedef short typedef/不優(yōu)化變量類型uu u8;16;32;8;16;32;/8 位無符號數(shù)/ 16 位無符號數(shù)/ 32 位無符號數(shù)/8 位有符號數(shù)/ 16 位有符號數(shù)/ 32 位有符號數(shù)typedef volatile utypedef volatile u typedef volatile u typedef volatile typedef volatile typedef volatil
15、e81632vuvu vu v v v8;16;32;8;16;32;816324.5編碼代碼的每一級均往右縮進 4 個空格的位置不使用 Tab 鍵,建議使用空格代替 tab 鍵,這樣代碼打印不回造成錯亂。相對獨立的程序塊之間要加空行括號內(nèi)側(cè)(即左括號后面和右括號前面)不加空格,多重括號間不加空格。如:SetName(GetFunc()函數(shù)形參之間應該有且只有一個空格(形參逗號后面加空格),如:CallFunction(para1, para2, para3),而CallFunction(para1,para2,para3) 不符合要求。操作符前后均加一個空格,如: nSum = nNunm1 + nNum2 。而 nSum=nNunm1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 標準出租合同范本
- 建造售樓合同范本
- 新房合作合同范本
- 密云公路運輸業(yè)務合同范本
- 2024屆廣東省廣州市增城高級中學開學摸底考試高三數(shù)學試題(含版解析)
- 齊齊哈爾大學《電子技術基礎實驗》2022-2023學年期末試卷
- 收車銷戶合同范本
- 2024商用玻璃器皿采購協(xié)議范例
- 2024年商業(yè)擔保協(xié)議樣式
- 2024年江沙區(qū)域產(chǎn)品購銷協(xié)議
- 銀行紀檢委員紀檢工作報告
- 2022版小學道德與法治課程標準測試題
- GB/T 27021.1-2017合格評定管理體系審核認證機構要求第1部分:要求
- GB/T 22796-2021床上用品
- 中國聯(lián)通LAN工程施工及驗收規(guī)范
- 中間表模式接口相關-住院與his-adt方案
- 臨床PCR檢驗的室內(nèi)質(zhì)控方法課件
- 計算機解決問題的過程-優(yōu)質(zhì)課課件
- 作文講評-“忘不了……”課件
- 深基坑安全管理(安全培訓)課件
- 12月4日全國法制宣傳日憲法日憲法知識科普宣教PPT教學課件
評論
0/150
提交評論