乙份編寫規範的**會讓人賞心悅目,養成良好的**編寫習慣是每乙個程式設計師應該具備的基本素養!
當專案需要多人合作共同編寫的時候,共同的風格、方式就變得尤為重要,**配合的效率也會提高,因此編寫本來規範**編寫的風格,請各位工程師參照。當然如果有不同的見解或需要增加的內容,請直接溝通。
針對總的書寫格式,包括對齊、縮排、空格、括號等等標準,需要使用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 這...