Keil平台下C語言書寫格式規範整理

2021-10-01 04:24:44 字數 2964 閱讀 5272

乙份編寫規範的**會讓人賞心悅目,養成良好的**編寫習慣是每乙個程式設計師應該具備的基本素養!

當專案需要多人合作共同編寫的時候,共同的風格、方式就變得尤為重要,**配合的效率也會提高,因此編寫本來規範**編寫的風格,請各位工程師參照。當然如果有不同的見解或需要增加的內容,請直接溝通。

針對總的書寫格式,包括對齊、縮排、空格、括號等等標準,需要使用astyle軟體輔助配置,配置方式參照如下

astyle all files:!e $e*.c $e*.h --style=allman --indent=spaces=4 --indent-preproc-block --pad-oper --pad-header --unpad-paren --suffix=none --align-pointer=name --lineend=linux --convert-tabs --delete-empty-lines --break-blocks -p -u --break-elseifs --verbose

astyle current file :-n !e --style=allman --indent=spaces=4 --indent-preproc-block --pad-oper --pad-header --unpad-paren --suffix=none --align-pointer=name --lineend=linux --convert-tabs --delete-empty-lines --break-blocks -p -u --break-elseifs --verbose

1)識別符號應當直觀且簡介,可望文知意,不必進行「解碼」。

例如:識別符號最好採用英文單詞或其組合,便於記憶和閱讀。切忌使用漢語拼音來命名。程式中的英文單詞一般不會太複雜,用詞應當準確。例如不要把current_value寫成now_value。

2)識別符號的長度應當符合「min-length&&max-information」原則,單詞最長不超過5個。

3)命名規格盡量與所採用的開發工具的風格一致。

例如,程式中的識別符號通常採用大小寫混排的方式,加下劃線,比如add_child。乙個單詞的可以小寫,例如value。

4)程式中不要出現僅靠大小寫區分的相似的識別符號

5)變數的名字應當使用名詞或形容詞+名詞

6)用正確的反義詞組命名具有互斥意義的變數或相反動作的函式等

7)盡量避免使用名字**現數字編號,如value1,value2等,除非邏輯上的確需要編號。

8)常量全用大寫字母,用下劃線分割單詞

9)靜態變數加字首s_(表示static)

10)如果不得已需要使用全域性變數,則使全域性變數前加字首g_(表示global,暫時不用)

11)巨集定義全部要大寫,單詞之間用下劃線分開

12)變數型別全部使用u8 、u16、s16等sys.h中的資料型別

13)函式的命名與變數相同

14)禁止無引數的函式命名時()內為空,應填寫void

15)函式的傳遞引數不超過5個

1)同一行代買最長不超過80個字元,否則換行編寫

2)如果程式中需要使用數字進行邏輯判斷,數字在前。例如if(5==value)

3)判斷中建議使用≥和≤替代》和<

4)判斷條件最好不要使用數字,數字用巨集定義或布林量代替,除非能特別直觀的知道數字的代表含義。同樣,for()中的截止條件最好也不用數字

1)在不必要的情況下避免使用全域性變數

2)全域性變數如果作用於只是在同一檔案中的其他地方呼叫,就用static限定其作用域(非必要)。

3)全域性變數如果作用是多個檔案,定義寫在xx.c檔案中,宣告寫在對應的xx.**件中,並且用extern關鍵字宣告

1)主迴圈或中斷中,非必要情況下避免使用delay()函式進行延時。主迴圈中的延**估是否可以使用定時器的定時功能替代。

2)在多重迴圈邏輯中,應將最忙的迴圈放在最內層。例如

for (row = 0; row < 100; row++)

應該改為

for (col = 0; col < 5; col++)

3)避免迴圈體中包含判斷語句,如果確實需要,考慮是否可以把判斷語句放在迴圈體外

4)盡量使用乘法、位與其它方法替代除法

5)非特殊情況,不同型別的中斷設定不同的搶占優先順序

1)函式的傳遞引數不超過5個

2)對於不需要數值回傳的使用值傳遞的方式

3)函式優先使用返回值,而不是輸出函式

4) 使用強型別引數,避免使用void*

1)具有單獨功能的.c檔案都需要配備對應的.**件,特殊情況除外

2).c檔案建議不超過2000行

3).c檔案中必須是同一型別功能的函式,實現不同功能的函式不能放在同乙個c檔案中。例如:adc的採集和繼電器的控制不應放在一起

5)每乙個功能都建立乙個readme.txt的檔案,對於除錯進度、工程修改、待除錯的問題和想法,都需要寫明。

版本:檔案功能描述:

修改記錄:

日期:特殊說明:

函式頭部注釋使用/**********************/模式,需要寫明的引數有

函式名:

函式功能:

輸入引數:

輸出引數:

返回值:

資料結構宣告(包括結構、類、列舉),如果其命名不是充分注釋的,必須加注釋。低於資料結構的注釋應放在其上方相鄰的位置,不可放在下面;對結構中的每個域的注釋放在此域的右方。

/* sccp inte***ce with sccp user primitive message name */

enum    sccp_user_primitiv

;變數在定義時要寫明其功能,取值範圍

1)注釋的原則是有助於理解閱讀,語言必須準確、易懂、簡潔

2)邊寫**邊注釋,修改**的同事修改相應注釋,以保證注釋與**的一致性。不再有用的注釋要刪除。

3)注釋的內容要清楚、明了,含義準確,防止注釋二義性,錯誤的注釋不煩無益反而有害

4)對**的注釋應該在其上方或右方相鄰位置,不可放在下面,如放在上方需與其上面的**用空行隔開

c 列舉在跨平台下的陷進

看上去一切正常,windows伺服器下也執行正常,但linux伺服器下卻無法自動觸發事件 後來發現,應該也無法顯式觸發事件,但eventid在設定觸發狀態時被強轉賦值了另乙個int,避免了這個問題,也增加了問題的隱蔽性。gdb除錯後發現event.prvindex,event.curindex都為6...

舉例書寫Makefile檔案 C語言)

在這裡,我自己寫乙個自己的makefile的例子,說明一下makefile是怎麼寫的。進入目錄,我們來建立乙個自己的makefile檔案,自己編譯自己的程式。在unpv13e 這個目錄內建立自己的乙個目錄。拷貝unpv13e tcpcliserv 目錄下的 tcpserv01.c 和 str ech...

c語言語句書寫規則

在c語言中字串是不可以分行寫的。在c 中,乙個長字串可以佔兩行或多行,但在最後一行之前的各行應用反斜槓結尾,例如 i love you 上面的字串與下面的單行字串等價 i love you 另外printf a 2f n,b 2f n,c 2f n,d 2f n,e 2f n a,b,c,d,e 這...