编程规范——嵌入式C和Visual C++

 
编程规范——嵌入式C和Visual C++
写作初衷
进公司几个月了,还是码了不少代码,干了不少打杂的工作,所以编写的程序也是五花八门,有底层的驱动,完全用C实现的,开发环境主要是keil;也有上层工具的开发,MFC实现,开发环境是VS2008。自己在这些不同的项目中反复转换,同时又需要在各项目中和其他同事交叉合作,这里面就出现了很多的问题。
1)项目中怎么去和其他同事配合以提高项目的开发效率
2)项目多了怎样来管理自己的代码,能够让它在以后类似的项目中可以复用
3)对于不同的项目怎么来编写代码才会让人觉得你看起来还比较“专业”
我们喜欢按自己的风格做事,而且有些习惯还难以纠正,我们总觉得看别人的代码就很不舒服,甚至有时候不愿意使用别人已有的代码而宁愿自己重新写一个,确实有些人写出来的代码让人很DT,但是也许别人也认为你的代码也写得不咋样。这些问题其实都可以通过制定一个合理且符合常规的程序编写规范来解决,这里并不是要让每个人的风格都一样,但是要让人家觉得你码出来的东西不是“shit”而更愿意表扬你:“吖,小Y,你的代码写得不错嘛。”
其实真正的规范本身就不合理而且也相当的繁琐,我在这里只是泛泛而谈,普及一些常识性的基础而已,还需要在不断的经验积累中调整修改、加以完善。自己水平有限,还希望大家能够不吝赐教。
嵌入式C编程规则
说规则之前,我不得先给大家推荐一些好书,按照下面这个流程走一走,你会得到很快的提升(如果你爱她你就当然愿意为她付出自己的青春与money——我说的是编程)。好,从基础的说起,C经典国内版——谭浩强的“C语言程序设计”或者“The C Programming Language”。你不要说,切,老子在大一就学了谭浩强这本书了,看这个有个鸟用啊?我只想说你真的很装逼,你能完全搞懂上面的东西吗?数组指针、函数指针、结构体指针、文件操作……你都掌握了吗?其实把这本书或者电纸书常备,有空的时候就翻一翻,有问题的时候就查一查还是非常有用的,就像我们小学的时候经常使用的“新华字典”。有一定基础之后我们迫切的要多学习点C中最经典的部分——就是各种指针,这时“C和指针”这本书完全可以帮到你,“程序员面试宝典”这本书也可以让你明白很多的,上面那些都搞得差不多的时候就可以看一些进阶的书籍了,如果往嵌入式走推荐看“系统程序员成长计划”,往C++走看“Thinking in C++”都是些好书啊,哥表示我爱不释手。有了扎实的基础知识当然我们还需要良好的编程习惯和编程风格,推荐大家看看“高质量C++_C编程指南”。
好,下面就来说一些关于嵌入式编程中的一些规则和细节问题。我还是以最基础的IDE——keil来说吧,以后你用到的那些开发ARM和DSP的其实也都差不多。
文件准备
         在嵌入式编程中,定义好工程中的一些规范是比较重要的,这样可以有效的管理项目文件,方便更新代码和合作调试。下面以keil中的工程文件为例说明。
1.keil中工程文件构成
      有的人在使用keil创建工程时,把各种源文件,头文件都放在工程的目录下,然后加上编译、链接等生成的各种文件,让整个工程文件看起来非常的杂乱,这样对于代码的移植和管理非常不利。下面介绍一种我个人认为比较合理的keil工程结构。如图1所示:
 
1 keil工程文件结构
2. 设置方法
其中“lis”和“obj”文件夹是用来存放编译后生成的“.lis”和“.obj”文件的,这个在新建工程的时候先在项目文件夹中新建这两个文件夹,然后进入keil的“option”中手动设置,如图2,选“Output”选择“Select Folder ForObjects”然后选到要目标文件夹。同样方法设置“lis”文件输出文件夹(上面那栏选“Listing”然后就相同了)。
 
2 设置工程文件输出目录
图1中的“src”文件夹用来存放各种代码文件,打开后结构如图3所示。“tool”文件夹用来放工程依赖的一些工具如芯片仿真器的驱动,二进制文件生成器等。
“src”中包含有:“drv”用来放模块驱动的“.c”源文件,“inc”用来放“.h”文件,“lib”用来存放库文件,“main”用来放主程序代码。如果平时喜欢整理,可以将各个模块能够正确运行的程序做成一个一个的“demo”程序,这些demo程序就可以存放在一个“demo”文件中方便自己以后使用。
通过上面的方法来管理工程就使整个工程文件结构比较清晰,而且有个好处就是下次你直接把那些文件夹copy到新的工程中再添加进新工程直接使用就OK了。同样的,我们需要在keil软件中也建立相应的文件结构,如图4所示,这样在工程中能够比较容易的定位到你的模块代码。
 
3 src”文件夹的结构
 
4 keil工程中的文件结构
类型定义
嵌入式c程序使用好typedef是比较重要的,在项目工程中应该添加一个属于自己的类型定义文件”typedef.h”头文件,该文件中将一些常用的类型使用typedef定义好。这样经过重新定义类型后在其他源程序中使得自己定义的类型关键字,就会使得程序看起来更规整,更简洁,我的“typedef.h”文件见附录B,仅供大家参考。
如:
typedef unsigned char UINT8;
typedef unsigned char U8;
typedef unsigned int UINT16;
typedef int INT16;
typedef int N16;
 
命名规则
下面开始介绍我们在编程时候的一些命名规则,这一点相当重要,这体现了一个程序员的专业程度,好的命名规则让我们的程序看起来就有美感or艺术。
共性规则:
1. 标识符的长度应当符合“min-length && max-information”原则,适当使用缩写来减少标识符长度,编程中常用的单词缩写整理见后面的附录A。

                
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值