C语言编程风格.
关于编程风格,不同书上有不同规范,不同公司都有自己的一套定义.根据自己的编程习惯做个简要说明.
1.变量定义
在定义变量时,前缀使用变量的类型,之后使用表现变量用途的英文单词或单词缩写,且每个单词或缩写的首字母大写.
无符号变量使用u8,u16,u32... | eg:unsigned char u8Temp; |
有符号变量使用s8,s16,s23... | eg:int s32Temp; |
浮点数变量使用 f32,d64....... | eg:float f32Temp double d64Temp; |
字符串变量使用s; | eg:char sTemp; |
数组变量使用a; | eg:unsigned char au8Temp[10]; int a32Temp[10]; |
指针变量使用p; | eg:unsigned char* pTemp; |
枚举变量使用e; | eg: enum Temp eTemp; |
结构体变量使用st; | eg:struct student stTemp; |
PS:另外需要说明的是.
unsigned char gu8NoiseDetectFlag = 0; //定义全局变量要在变量名前加上g(globar-->全局的意思)
unsigned char u8PrePointCnt = 0; //定义局部变量就省略掉.
2.宏定义
对于宏定义使用:使用大写或者大写+下划线的方式.
PS:#define CHIP_SENSING_TIMES 1
3.程序排版
一行程序的开始使用tab键进行对其,一行的中间使用空格键进行对齐.
//PS:注意tab缩进.
void Locate_FindStableFreq(void)
{
uint8_t u8Idx;
for(u8Idx=0; u8Idx<20; u8Idx++)
{
TP_FrequencyHopping(FALSE);
if(Locate_CheckNL() <= gcstSysAlgorithm.u8NL_MinLevel)
break;
}
}
4.注释的书写
这里注释分为函数头注释,程序中代码注释.
函数头注释使用如下形式.
PS:由于写的程式并不是自己一个人使用,通常很多时候一个project会由一个Team完成,这时候就非常有必要针对每个function加上必要的注释,这样别人拿来使用的时候,只需通过函数头注释描述就大概能知道此function用途跟意义,这样可以节省开发时间!!!
/*--------------------------------------------------------------------------------------------------------------------*/
/* Function: DrvSPI_Busy */
/* */
/* Parameters: */
/* eSpiPort [in]: Specify the SPI port */
/* */
/* Returns: */
/* TRUE: The SPI port is in busy. */
/* FALSE: The SPI port is not in busy. */
/* */
/* Description: */
/* Check the busy status of the specified SPI port. */
/*-------------------------------------------------------------------------------------------------------------------*/
BOOL DrvSPI_Busy(E_DRVSPI_PORT eSpiPort)
{
// NUC103 have 3 SPI only.
if(eSpiPort >= eDRVSPI_MAX)
return FALSE;
return ((SPI_PORT[eSpiPort]->CNTRL.GO_BUSY)?TRUE:FALSE);
}
5.测试代码
在编译的同时,需要注意添加适当的测试代码,这样可以减轻以后测试代码时的工作量.
这里的第五条,起始已经不仅仅是变成风格的问题,涉及到编程效率,变成习惯的范畴.
不过这真的是一个非常好的习惯!!!