[分享] 你想培养良好的嵌入式编程风格吗?看看《嵌入式C语言进阶之道》吧

tiankai001   2014-4-26 23:30 楼主
嵌入式C语言进阶之道


           C语言的书有一大堆,嵌入C语言的书也不少,但都不过是简单介绍一下标准C语言的语法,再讲一下嵌入式C语言与标准C的区别,讲一下新增加的关键字。这样的书,对于初学者或许是适合的。问题是,若是我不愿意只是当一个小菜鸟,我想对嵌入式C语言有更多更深的了解时,我突然发现,满图书馆的书,竟找不到一本,能解我心头之惑。
对于在实际工作当中, 你不再是独自编写程序,你要和小组内的成员之间分工合作,你要学会模块化编程、要写出更规范更安全的代码、做更合理的优化、减少更多的bug。所有的这些,都迫使你必须更彻底的理解嵌入式C的语法结构,数据细节,与硬件打交道的特性,使得你必须时时考虑硬件与C的对应关系并养成良好的编程习惯。

       本文的原意是想尽可能多的解决上述问题,帮助更多的新人深入理解嵌入式C语言。
        本文是我工作之余整理而来。是对我个人学习嵌入式C语言过程的总结。本文涉及的知识点多数来自于网络,其中加入我个人理解以及自己平时遇到的注意点。


        本文从编程风格谈起,讲述了模块化的编程方法,对一些大型项目中常用重点关键字做了讲解,参照MISRA C 2004规范,对嵌入式C安全编程做了阐述,对一些嵌入式C的小技巧进行了讨论。
在读本文时,我假设你有C语言基础、至少理解一种微控制器(51、PIC、AVR、DSP、ARM等)、有简单的(这里本想写较深的)汇编基础。





http://download.eeworld.com.cn/detail/499362154/1584

回复评论 (2)

良好编程风格——读《嵌入式c语言进阶之道》整理
一.排版:
  • 代码缩进空格数为4个;
  • 较长的语句分2行来写;
  • 函数的参数较多、较长时,分多行来书写;
  • if、do、while、switch、for、case等关键字,必须加上大括号{}。
二.注释:
  • 边写代码边注释,修改代码同事修改相应的注释,以保持注释与代码的一致性;
  • 说明性文件必选在文件头着重说明,例如*.c、*.h文件;
  • 函数头应该要注释,包括函数名称、输入参数、返回值、功能说明等;
  • 全局变量和关键的局部变量要注释其功能;
  • 复杂的宏定义同样要加上注释;
  • 复杂的结构体同样要加上注释;
  • 如有相对独立的语句组注释,写在语句组上行,不留空格。
三.标示符:
  • 变量的命名;
    • 局部变量以小写字母命名;
    • 全局变量以首字母大写方式命名(骆驼式);
    • 定义类型和宏定义常数以大写字母命名;
    • 变量的作用域越大,它的名字所带有的信息就应该越多。
  • 变量命名要注意缩写并且让人简单易懂,若是特别缩写要详细说明;
  • 全局变量和全局函数的命名一定要详细,不惜多用几个单词;
  • 用于编译开头的文件头,必须加上当前文件名称,防止编译时产生冲突;
  • 禁止用汉语拼音作为标示符名称;
  • 建议名称间的区别要显而易见。
四.表达式和基本语句:
  • 不要编写太复杂的复合表达式;
  • 不要有多用途的复合表达式;
  • 如果代码行中的运算符比较多,用括号确定表达式的操作顺序,避免使用默认的优先级;
  • if语句:
    • 不可将布尔变量直接跟TRUE、FALSE或者1、0进行比较;
    • 应当将整型变量用"=="或"!="直接与数字比较;
    • 避免将浮点变量用"=="或"!="直接与数字比较,应该转化为">="或"<="形式。
五.杂项:
  • 一些常量(如圆周率PI)或者常需要在调试时修改的参数最好用#define定义;
  • 不要轻易调用某些库函数;
  • 对各优先级不熟的话,加上括号;
  • 不管有没有无效分支,switch函数一定要default分支;
  • 函数的参数和返回值没有的话最好使用void;
  • 一些常数和表哥之类的应该放在code中去节省RAM;
  • 程序编完编译看有多少code多少data,注意不要使堆栈为难;
  • 减少函数本身或函数间的递归调用;
  • 编写可重入函数时,若使用全局变量,则应通过关中断、信息量(P、V操作)等手段对其加以保护;
  • 在多重循环中,应将最忙的循环放在最内层;
  • 避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中;
  • 系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用;
  • 编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成代码丢失。


点赞  2014-4-26 23:32
学习了,好的编程习惯对于编写好的程序有着决定性的作用,我们要从一点一滴做起,培养好的变成习惯,从注释到函数书写,都要注意
点赞  2014-4-27 10:28
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复