C/C++编程规范(一)命名篇

来源:互联网 发布:数据库建模培训 编辑:程序博客网 时间:2024/05/21 16:55

1 编码规范

C系的程员往往面临C和C++语言混合编程,在所有的.h文件中统一增加如下内容,可以保证无论是C语言还是C++调用都不会出问题。

#ifdef __cplusplusextern "C" {#endif /*头文件内容*/ #ifdef __cplusplus}#endif  


1.1 数据类型

typedef unsignedcharBYTE;/**< 8位无符号 */typedef unsignedshortWORD;/**< 16位无符号 */typedef unsignedlongDWORD;/**< 32位无符号 */typedef signedcharSBYTE;/**< 8位有符号 */typedef signedshortSWORD;    /**< 16位有符号 */typedef signedlongSDWORD;    /**< 32位有符号 */typedef signedboolBOOL/**<布尔型*/

1.2 结构定义

结构以小写的t开头,第二个字母大写,如下例:tUIToDptSCMsg

实例:

/** * @brief: 消息定义 */typedef struct tUIToDptSCMsg{tSysMsgHead  sSysMsgHead;/* 消息头 */DWORD dwBtnID;/* 按键ID */BYTE  bUserNumLen;/* 用户号长度 */BYTE  aUserNum[MAX_NUM_LEN + 1];/* 用户号 */BYTE  bBtnAttribute;/* 按键属性,参见属性定义 */}tUIToDptSCMsg;


1.3 变量定义

1、变量名称定义以小写字母开头,小写字母表示变量类型。

如下例:

tDbAllAnls sDbAllAnls = {};/*结构变量以s开头*/char  szName[MAX_NAME+1] = “”;/*字符串变量定义以sz开头*/cSC_SCall *pCall =P_ NULL;/*指针变量以p开头*/float  fTval;    WORD  wSessionID = 0xffff;    BYTE  bState = 0xff;             BOOL  blChg= FALSE;DWORD dwCallID= 0xffffffff;float  flTval;    

 

2、所有变量定义都要有注释,包括临时变量。(除i,j这种循环变量)

3、函数变量增加INOUTINOUT定义。

#define IN#define OUT#define INOUT#define OUTIN例如:/** * @brief 获得主叫端口信息 * @param bModule 模块号 * @param wPortNo 端口号 * @param pDbPortCfgAck查端口应答指针 * @return      返回值为SYS_OK或错误码 * @see */BYTE bSCGetCallerPortInf(IN BYTE bModule,IN WORD wPortNo, INOUT tDbPortCfgAck*pDbPortCfgAck)

1.4 宏定义

宏定义必须是全大写,如果是模块的宏定义都要以模块名称开头,以下划线分隔。


1.5 函数定义

1、 函数名称定义以小写字母开头可以表示出返回值,后续接模块号名称以大写简写。

2、 函数头定义下如,包括函数功能描述,入口参数注释,返回值

/** * @brief 获得端口详细类型 * @param bModule 模块号 * @param wPort 端口号 * @return      端口详细类型,0xff是无效值 * @see */BYTE bSCGetPortAttrib(IN BYTE bModule,IN WORD wPort){BYTE bPortType = 0xff;/*端口类型*/int iTrace = SYS_ERR;/*是否跟踪打印标志*/ bPortType = dbGetPortAttrib(bModule,wPort); iTrace = iSCTraceSwitch(MDL_SC_SCALL,DEBUG_API_CALL,wPort);if(iTrace ==SYS_OK){sysTrace(bModule,0,P_NULL,"bSCGetPortAttrib--wPort =0x%x,bPortType=%d",wPort,bPortType);}return bPortType;} /** * @brief 向接入层送setup_ack消息 * * @param  bToneType  放音类型 * * @return      无返回 * @see */void cSC_SCall::vSCallSendSetupAckToIF(IN BYTE bToneType){tScIfSetupAck *pTmp = P_NULL;/*业务层到接入层的消息指针*/ pTmp = ( tScIfSetupAck * )CallM_alloc( ) ;if(  pTmp == P_NULL ){sysError(MDL_SC_SCALL, 0, P_NULL,"CallM_alloc(tScIfSetupAck)= P_NULL!!!!!!!!!!!");return;}pTmp ->sSysMsgHead.bDstTask = TASK_IF;   pTmp ->sSysMsgHead.bSrcTask = TASK_SC;              pTmp ->sSysMsgHead.wMsgLen = sizeof(tScIfSetupAck);     pTmp ->sSysMsgHead.wFuncCode = SC_IF_SETUPACK; pTmp ->sSysMsgHead.wPortNo = wPortNo; pTmp ->dwCallID = dwCallID;           /**<CALLID*/ pTmp ->bToneType = bToneType;  /**< 通知接入层;0xff表示送空音 */           vIfScSendMessage((tSysMsg *)pTmp);            return; }


1.6 文件定义

1、文件名称以模块号起头第一个字母大写,后续加下划线,加文件实现功能,第一个字母大写。如Csc_Main.cpp Dbs_Main.cpp

2、文件头如下标准,包括文件名、处理内容,公司信息、作者、版本号、初始建立文档时间、修改历史等等

/** * @file    CallM_Record.cpp * @brief   业务层处理函数 *                              * @writer  XXX * @version 1.00 * @date    2008.08.25 * @history  *2008-09-09added by XXX功能说明*/

0 0
原创粉丝点击