在C语言里面宏定义的应用是很灵活的,但是一般讲C语言的书往往并不详细讲述宏的应用,只是简单提一下。
宏的应用是程序模块化,通用化一个重要手段。嵌入式系统做多了就会发现其实没给项目应用的底层函数都十分相似,甚至是完全一样,工作方式也很固定。为了能简化编程工作量,通常都是从以往做的项目中将有用的函数先考到一起在做整理,不要的部分就删掉,这样一来,程序看起来似乎一样,但是又有所不同,删来改去的,常常是改了这里,漏了那里的程序调试和维护起来也很不方便。但是使用宏定义的预编译命令就可以很好的解决这样的问题,在原则篇里面讲的程序分三层来编写,HAL层里就是和芯片相关的驱动程序,在不同场合下我们可能使用中断方式访问器件可以可能用查询方式来处理,但是不论使用什么方式只是除非方式不同而已,处理却是一样的。处于这种考虑采用宏定义的选择编译方式就可以很轻松的改变使用触发方式,而且经过测试后沉淀下来的函数语句可靠性比较高,不容易出错,具体做法后面在慢慢解释。说了这么多无非是想说明用好宏的好处,引起重视,是合理偷懒的有效手段。
接下来要仔细说怎么用了喔:)
(一)#include
包含命令这个大家最熟悉了,写嵌入式C程序一定要用的,不用不行。但是熟悉的东西还是有些地方也许并不熟悉。那就是#include<> 和#include""的区别。有些编译器对这个两个用法并不敏感,但是我遇到的也就我们教研室用的所有器件C编译器都对这个敏感。没有处理来就编译就会通不过。
<>表示括号里面的文件在编译器默认放置文件的地方搜索包含文件
""表示引号里面的文件在当前文件的相同位置处搜索包含文件
<