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.测试代码

在编译的同时,需要注意添加适当的测试代码,这样可以减轻以后测试代码时的工作量.

这里的第五条,起始已经不仅仅是变成风格的问题,涉及到编程效率,变成习惯的范畴.

不过这真的是一个非常好的习惯!!!

C编程风格.的更多相关文章

  1. C++服务器开发之基于对象的编程风格

    Thread.h #ifndef _THREAD_H_ #define _THREAD_H_ #include <pthread.h> #include <boost/functio ...

  2. ES6深入学习记录(三)编程风格

    今天学习阮一峰ES6编程风格,其中探讨了如何将ES6的新语法,运用到编码实践之中,与传统的JavaScript语法结合在一起,写出合理的.易于阅读和维护的代码. 1.块级作用域 (1)let 取代 v ...

  3. 个人c语言编程风格总结

    总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...

  4. Google Java编程风格指南

    出处:http://hawstein.com/posts/google-java-style.html 声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Creative Comm ...

  5. 编程风格(Coding Style)要求

    编程风格(Coding Style)要求2.1.1 文件(1) 每个模块(module)一般应存在于单独的源文件中,通常源文件名与所包含模块名相同.(2) 每个设计文件开头应包含如下注释内容:? 年份 ...

  6. Javascript编程风格

    Douglas Crockford是Javascript权威,Json格式就是他的发明. 去年11月他有一个演讲(Youtube),谈到了好的Javascript编程风格是什么.我非常推荐这个演讲,它 ...

  7. Google Java编程风格指南中文版

    作者:Hawstein出处:http://hawstein.com/posts/google-java-style.html声明:本文采用以下协议进行授权: 自由转载-非商用-非衍生-保持署名|Cre ...

  8. 《C#编程风格》还记得多少

    开始实习之后,才发现自己是多么地菜.还有好多东西还要去学习. 公司很好,还可以帮你买书.有一天随口问了一下上司D,代码规范上面有什么要求.然后D在Amazon上面找到了这本书<C#编程风格(Th ...

  9. Java学习笔记(四)——google java编程风格指南(上)

    [前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...

  10. Java学习笔记(五)——google java编程风格指南(中)

    [前面的话] 年后开始正式上班,计划着想做很多事情,但是总会有这样那样的打扰,不知道是自己要求太高还是自我的奋斗意识不够?接下来好好加油.好好学学技术,好好学习英语,好好学习做点自己喜欢的事情,趁着自 ...

随机推荐

  1. cognos开发与部署报表到广西数据质量平台

    1.cognos报表的部署. 参数制作的步骤: 1.先在cognos里面把做好的报表路径拷贝,然后再拷贝陈工给的报表路径. 开始做替换,把陈工给的报表路径头拿到做好的报表路径中,如下面的链接http: ...

  2. Xcode 运行报错:“Your build settings specify a provisioning profile with the UUID ****** however, no such provisioning profile was found”

    iOS开发中遇到"Your build settings specify a provisioning profile with the UUID ****** however, no su ...

  3. [!] Unable to satisfy the following requirements:

    出现这个问题是由于我本地Podfile文件上第三方版本太低. 解决方案就是,更新一下本地Podfile文件上的第三方版本,也就是pod update --verbose一下. 注意一下,这个命令需要很 ...

  4. HTML5 canvas中的转换方法

    转换方法 scale(scalewidth,scaleheight)                缩放当前绘图至更大或更小 scalewidth         缩放当前绘图的宽度 (1=100%, ...

  5. 【结构型】Flyweight模式

    享元模式的主要目的.意图是为对象的大量使用提供一种共享机制.该模式的思想重在复用.共享复用.像文字.列表中的格子等这类多数都是需要考虑复用技术,否则必将大量耗费内存空间而使资源以及性能等大量耗费.该模 ...

  6. C# 实现将PDF转文本的功能

    这篇文章最初只描述使用 PDFBox 来解析PDF文件.现在它已经被扩展到包括使用 IFilter 和 iTextSharp 的例程了.  这篇文章和对应的Visual Studio项目已经更新到目前 ...

  7. IDEA启动自动进入最后一个项目

    每次打开IDEA的时候总会加载上级最后打开的工程,可能这个工程并不是我需要的,我就得重新去打开我需要的工程,感觉这一点非常鸡肋. 使用如下方法可以在启动的时候,选择启动哪个工程,而不是直接进入. Fi ...

  8. 仿QQ5.0以上新版本侧滑效果

    1.此效果使用了csdn大神孙国威的代码案例在此感谢附上参考博客地址: http://blog.csdn.net/manoel/article/details/39013095/#plain 2.sl ...

  9. Ionic 测试针对Andorid平台

    环境准备: (1)nodejs环境以及配置完成: y@y:~$ node -v v0.12.2 (2)Android SDK 环境变量已经配置完毕: export ANDROID_SDK=/home/ ...

  10. Baidu Map Web API 案例

    <html> <head> <meta http-equiv="Content-Type" content="text/html; char ...