本节书摘来自华章出版社《嵌入式C编程:PIC单片机和C编程技术与应用》一书中的第1章,第1.4节,作者 [美]马克·西格斯蒙德(Mark Siegesmund),更多章节内容可以访问云栖社区“华章计算机”公众号查看
1.4 C预编译指令
预编译是C语言中一个非常有意思的特性。预处理使用工具(预处理器)在编译前先扫描一遍代码,并对代码做出相应的修改从而生成用来编译的代码。预编译指令由#开始,占用一整行。在第3章中将会详细介绍它。在上面的例子中,#include指令将文件(e3.h)的整个内容都替换到#include这一行,然后再来编译。
例如,假设我们创建了一个名为delay.inc的文件,并将下面一行代码添加进去:
这样可以将上面程序中的两行delay_ms替换成#include 。程序的最终编译结果也和以前没有区别。在编译开始前,预处理器会读取delay.inc文件的内容,然后将所有#include 替换成delay_ms(500)。
预处理器是C语言的一个强大特性,可以提高程序的可读性,让我们能够在最大程度上重用代码,并显著提高程序的可维护性。
在上述示例程序中,第一行就是一个预编译指令,用来包含e3.h文件。在许多工程和硬件规范定义中,除注释外,程序第一行通常都用一个include指令来包含某文件。这类文件通常以.h为扩展名。在上述例子中,E3硬件所需的所有定义都在e3.h这个文件中。