AVR单片机入门与速成攻略
上QQ阅读APP看书,第一时间看更新

2.5 预处理命令

在编写程序时,经常会使用以“#”开头的预处理命令。在对程序进行编译时,会有专门的预处理程序来对这些命令进行处理。预处理命令不属于C语句,因此在行末不必加分号,而且预处理命令通常要放在程序的最前面。在C程序中加入预处理命令可以改善程序结构,提高编译效率。C语言提供的预处理命令主要有宏定义、文件包含和条件编译三种,以下我们要重点介绍前面两种。

2.5.1 宏定义

宏定义的作用是用一个标识符(宏名)来表示一个字符串,其格式为:

#define  标识符(宏名)  字符串

在宏定义中,“#”表示这是一条预处理命令,define为宏定义命令。标识符是我们自行定义的宏名,字符串可以是常数或表达式等。宏定义的方法可以参考以下代码:

#define  PI  3.141592         //用PI来表示3.1415926 这个常量
#define  M   ( X*Y+8Y )       //用M 来表示(X*Y+8Y) 这个表达式
#define  uint unsigned int    //用uint表示unsigned int

使用宏定义的方法可以增强代码的可读性,并且能使语句变得简洁明了。

2.5.2 文件包含

文件包含的作用是把另外一个文件的内容复制到本包含命令所在的位置,从而把指定的文件和当前的源程序文件连接成一个源文件。文件包含的格式为:

#include <文件名>

文件包含也可以使用以下格式:

#include"文件名"

在以上两种格式中,使用尖括号与引号的意义是不同的。使用尖括号时,程序首先在编译器头文件所在目录下搜索头文件;而使用引号时,程序首先搜索项目文件所在目录,然后再搜索编译器头文件所在目录,二者的搜索顺序刚好相反。文件包含的方法可以参考以下代码:

#include <avr/io.h>

在上述代码中,include<avr/io.h>的作用是把“io.h”这个头文件连接到本程序中来,用于对单片机的各个寄存器进行规范化的定义。