1. 程式人生 > >C程式設計規範

C程式設計規範

C程式設計規範

一、命名

1、程式檔案命名:程式檔案命名要求具備模組縮寫,功能描述等資訊。採用每個單詞首字母大寫方式。

exzamp: Driver.c  FontManage.c

2、函式命名

DataManageValueSet(int iValue);

3、結構體命名

typedef struct   _ST_DISP_WALL_INFO 
{
    char szName[16];
    int iRow;
    int iColumn;
}ST_DISP_WALL_INFO, *PST_DISP_WALL_INFO;    // “ST”或者“PST”(指標型別)作為字首

4、聯合體命名

typedef struct  _UN_DISP_WALL_INFO  
{
    char szName[16];
    int iRow;
    int iColumn;
}UN_DISP_WALL_INFO, *PUN_DISP_WALL_INFO;    // “UN”或者“PUN”(指標型別)作為字首

5、變數命名:採用第一個單詞首字母小寫,後續首字母大寫

【規則1】靜態變數加字首s_(表示static),同時要求帶資料型別
【規則2】全域性態變數加字首g_(表示global),同時要求帶資料型別
【規則3】所有巨集定義、列舉常數和const變數全部使用大寫的字母,用下劃線分割單詞
【規則4】變數名由單詞組合而成, 具備該變數特徵資訊。

二、命名縮寫

[重要] : https://www.cnblogs.com/huninglei/p/5497148.html

三、C++相關規範(待補充)

C++風格

class  SeriPort  //定義類
{
  int WriteByte()
    {
    int iValue;
    int iData;
    }
}

int main()
{
  SeriPort  ctrUart = new SeriPort();
  ctrUart->WriteByte();     
}

驅動層程式設計風格(下劃線大行其道)

檔案命名: font.c key_manage.c wifi_config.h
全域性變數命名: g_write_value;
區域性變數命名: i_write_value、ivalue、value(不加g修飾預設都是區域性)
函式定義: writee_byte();

四、註釋

版權宣告

//中文版權宣告
/***************************************************************************
* Copyright (c) 2018, USMART, All rights reserved.
* 
* 檔名稱:檔名稱
* 摘    要:簡要描述本檔案的內容
* 作    者:作者名字
*
* 修改記錄:
*[日期][作者/修改者] [修改原因]
***************************************************************************/


//英文版權宣告
/****************************************************************************
* Copyright (c) 2018, USMART, All rights reserved.
*
* FileName   : xxx.h
* Description: xxxxxx.
* Author     : xxxxxx([email protected])
* Date       : 2018/09/27
* Version    : 1.0
*
* Change Logs:
*   2018/09/27 xxxxxx : Create file.
****************************************************************************/

函式註釋

/***************************************************************************
* Function   : ModbusTcpRecvMsg
* Description: read data by ModbusTcp protocol
* Parameter  :
*              [Input  Parameter]
*                   iFd            @Socket file handle                
*              [Output Parameter]
*                   pucRsp         @Response data from slave
* Return     :      
                 iMsgLength      @the total len of Response data
* Change Logs:
*           2018/11/22  jiangfeng.zhang :add comment
*           2018/11/23  jiangfeng.zhang :corrects printf bug in 383 Line  
***************************************************************************/

int ModbusTcpRecvMsg(int iDevFd,unsigned char *pucRsp)