首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言編程規範與示例代碼:類型重定義、消息結構與函數文檔模板

     編輯:關於C語言

C語言編程規範與示例代碼

本文展示一套工業級C語言編程規範,涵蓋基本類型重定義、通訊協議結構體設計、函數文檔模板及單元測試實例,適合嵌入式與系統級開發參考。

1. 基本數據類型重定義 (standard.h)

為消除平台差異,統一使用固定寬度類型別名:

typedef char s8; typedef unsigned char u8;
typedef signed short s16; typedef unsigned short u16;
typedef int s32; typedef unsigned int u32;
typedef float f32;
typedef signed long long s64; typedef unsigned long long u64;
typedef enum {FALSE = 0, TRUE = !FALSE} bool;
typedef bool BOOL;

2. 通訊協議核心結構體

消息頭 STRU_MSG_HEAD

typedef struct {
    u16 u16MsgType;      // 消息類型
    u16 u16MsgLength;    // 有效數據長度
    u8  u8TransType;     // 傳輸通道:0-網絡 1-串口
    u8  u8Reserved[3];   // 字節對齊保留
} STRU_MSG_HEAD;

時間信息 STRU_TIME_INFO

typedef struct {
    u16 u16Year; u16 u16Month; u8 u8Day;
    u8 u8Hour; u8 u8Minute; u8 u8Second;
} STRU_TIME_INFO;

業務消息結構(請求/響應)

// 查詢系統信息請求
struct stru_machine_info_req { STRU_MSG_HEAD struMsgHeader; };

// 系統信息響應
struct stru_machine_info_rsp {
    STRU_MSG_HEAD struMsgHeader;
    f32 f32Temp; f32 f32Vol; f32 f32CpuFreq;
    u32 u32FreeMem; u32 u32FreeDisk;
};

// 軟件升級結果響應
struct stru_software_update_rsp {
    STRU_MSG_HEAD struMsgHeader;
    u8 b8Successful; u8 u8Reserved[3];
};

3. 標準函數文檔頭模板

/**********************************************************************
 * 功能描述:
 * 輸入參數:
 * 輸出參數:
 * 返回值:
 * 其它說明:
 * 修改記錄: // 日期 版本 修改人 內容
 **********************************************************************/

4. 單元測試實例 (UnitTest.c)

演示協議解析與字段校驗:定義消息結構UserReqMsg_T,主流程讀取用戶輸入,調用ProcUserReqMsg驗證操作類型(1/2)、用戶號碼長度(8位)、操作時間格式(8位)。

INT32 ProcUserReqMsg(UserReqMsg_T *ptUserReqMsg) {
    if (!ptUserReqMsg) return -1;
    if (ptUserReqMsg->iOperType != 1 && ptUserReqMsg->iOperType != 2) return -2;
    if (strlen(ptUserReqMsg->szUserNumber) != 8) return -3;
    if (strlen(ptUserReqMsg->szOperTime) != 8) return -4;
    return 0;
}

關鍵規範點:使用strncpy防緩衝區溢出、參數傳遞加&取地址、詳細錯誤碼返回、統一的修改歷史記錄格式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved