字首 | 含義 |
---|---|
g_ | 全域性變數 |
c_ | 常數 |
m_ | c++類成員變數 |
s_ | 靜態變數 |
字首 | 含義 |
---|---|
a | 陣列 |
p | 指針 |
fn | 函數 |
v | 無效 |
l | 控制代碼 |
h | 長整型 |
b | 布爾 |
f | 浮點型 、檔案 |
dw | 雙字 |
sz | 字串 |
n | 短整型 |
d | 雙精度浮點 |
cnt | 計數 |
c \ ch | 字元 |
n \ i | 整型 |
by | 位元組 |
w | 字 |
r | 實型 |
u | 無符號 |
字首 | 含義 |
---|---|
Max | 最大 |
Min | 最小 |
Init | 初始化 |
Temp \ T | 臨時變數 |
Src | 源物件 |
Dest | 目標 |
如:主控程式爲 mpMain.c,mpDisp.c 等。
如:主控程式爲 Main.c,Disp.c 等。
// 檔案頭註釋
// 防止重複參照標頭檔案的設定
// #include 部分
// enum 常數宣告
// 型別宣告和定義,包括 struct、union、typedef 等
// 全域性變數宣告
// 檔案級變數宣告
// 全域性或檔案級函數宣告
// 函數實現。按函數宣告的順序排列
// 檔案尾註釋
#include 「/project/inc/hello.h」 /* 不應使用絕對路徑 */
#include 「../inc/hello.h」 /* 可以使用相對路徑 */
#include <stdio.h> /* 標準標頭檔案 */
#include <projdefs.h> /* 工程制定目錄標頭檔案 */
#include 「global.h」 /* 當前目錄標頭檔案 */
#include 「inc/config.h」 /* 路徑相對於當前目錄的標頭檔案 */
#ifndef __DISP_H /* 檔名前名加兩個下劃線「__」,後面加 「_H」
#define __DISP_H
//...
//...
#endif
/* 模組1標頭檔案:module1.h */
extern int a = 5;
/* 在模組1的 .h 檔案中宣告變數 */
void DemoFunc(void){
uint8_t i;
/* 功能塊1 */
for(i = 0; i < 10; i++){
}
//不同的功能塊間空一行
/* 功能塊2 */
for(i = 0; i < 10; i++){
}
}
if((ucParam1 == 0) && (ucParam2 == 0) && (uParam3 == 0))
|| (ucParam4 == 0){
//長表達式需要換行書寫
}
rect.length = 0; rect.width = 0;//錯誤寫法
rect.length = 0;
rect.width = 0;//正確寫法
~~for(){
}//不規範
for()
{
}//規範~~
int_32 a, b, c;
if(current_time >= MAX_TIME_VALUE)
a = b + c;
a *= 2;
a = b ^ 2;
*p = 'a';
flag = !sEmpty;
p = &mem;
i++;
p->id = pid;
if (a>=b && c >d){
}
/* 測試 */
//規範寫法無此空行
test_id = test[index].index;
test_val = test[index].value;
test_id = test[index].index;
test_val = test[index].value;
/* 測試 */ //規範寫法註釋應在語句前
/* 測試 */
test_id = test[index].index;
test_val = test[index].value;
/* code one comments */
program code one
/* code two comments */
program code two
/* code one comments */
program code one
/* code two comments */
program code two
void example_fun( void )
{
/* code one comments */
CodeBlock One
/* code two comments */
CodeBlock Two
}
void example_fun(void){
/* code one comments */
CodeBlock One
/* code two comments */
CodeBlock Two
}
case CMD_FWD:
ProcessFwd():
if(){
}
if(){
***ProcessCFW_B(); /* now junp into case CMD_A */***
}
case CMD_A:
ProcessA();
break
temp 可縮寫爲 tmp;
flag 可縮寫爲 flg;
statistic 可縮寫爲 stat;
increment 可縮寫爲 inc;
message 可縮寫爲 msg;
uint8_t dat01;
void Set00(uint8_t c);
應改爲有意義的單詞命名:
uint8_t ucWidth;
void SetParam(uint8_t _ucValue);
word = (high << 8) | low;
if ((a | b) && (a &c))
if ((a | b) < (c &d))
word = high << 8 | low
if (a | b && a & c)
if (a | b < c & d)
if (Trunk[index].trunk_state == 0) {
Trunk[index].trunk_state = 1;
}
應改爲如下形式 :
if (Trunk[index].trunk_state == 0) {
Trunk[index].trunk_state = TRUNK_BUSY;
}
* stat_poi ++ +=1
* ++ stat_poi += 1;
應分別改爲如下:
*stat_poi +=1;
stat_poi++; /* 相當於 "stat_poi ++ +=1"*/
++stat_poi;
*stat_poi += 1; /* 相當於 "++ stat_poi += 1;"*/
typedef unsigned char uint8_t
typedef unsigned short uint16_t
typedef unsigned long int uint32_t
typedef signed char int8_t
typedef signed short int16_t
typedef signed long int int32_t
對於全域性變數(global variable),在其名稱前加g和變數型別符號字首。
uint32_t g_ulParaWord;
uint8_t g_ucByte;
對於靜態變數(static variable),在其名稱前加s和變數型別符號字首。
static uint32_t s_ulParaWord;
static uint8_t s_ucByte;
typedef enum{
KB_F1 = 0; /* F1鍵程式碼 */
KB_F2,
KB_F3
}KEY_CODE_E;
#define LOG_BUF_SIZE 8000
uartReceive(串列埠接收)
函數的的形參都以下劃線_開頭,已示與普通變數進行區分,對於沒有形參爲空的函數(void)括號緊跟函數後面。
uint32_t uartConvUartBaud(uint32_t _ulBaud){
}
void PrintRecord(uint32_t _RecInd);
int32 InputRecord(void);
uint8_t GetCurrentColor(void);
void InitVar(void){
Rect.length = 0;
Rect.Width = 0; /* 初始化矩形的長寬 */
Point.x = 10;
Point.y = 10; /* 初始化點的座標 */
}
void InitRect(void){
Rect.length = 0;
Rect.Width = 0; /* 初始化矩形的長寬 */
}
void InitPoint(void){
Point.x = 10;
Point.y = 10; /* 初始化點的座標 */
}