第八章 编译预处理指令
教学要求
1.掌握:常用的编译预处理指令,例如宏定义指令,文件包含指令和条件编译指令。
2.理解:编译预处理的概念和编译程序对预处理指令的处理方式。
3.了解:使用编译预处理功能的优点。
一、编译预处理指令概述
所谓编译预处理,是指在对源程序进行编译之前,编译预处理程序先对源程序中的编译预处理指令
进行预先的处理,然后编译器再对处理后的结果进行编译,从而得到目标代码。
编译预处理程序是编译器的一部分,由编译器自动启动。
编译预处理是 C 语言的一个重要功能,为了与其他 C 语言语句区别开,编译预处理命令以"#"号开
头,并单独占用一个书写行,行尾不使用分号作为结束符。
编译预处理指令扩展了 C 语言编程环境的范围,改善了程序的组织和管理。恰当的使用编译预处理
功能,可以有效的提高程序的可读性,可维护性和可移植性。
C 语言中常用的编译预处理指令有宏定义指令,文件包含指令和条件编译指令。
二、#define 宏定义指令
所谓宏,是指一个表示特定内容的标识符。所谓宏定义,是指定义一个代表一个字符串或一段代码
串的宏,被定义的内容称为宏体。在对源程序进行编译时,预处理程序将源程序中所有的宏名,均以定
义的宏体替代之,这个替代过程称为“宏替换”。
这个过程类似与进行文本编辑时的“替换”功能。
在 C 语言中,宏定义分为不带参数的宏定义和带参数的宏定义两种。习惯上我们定义宏的时候,常
用大写字母表示,以示与变量区别。
(一)不带参数的宏定义
C 语言使用#define 定义不带参数宏定义,其一般格式为:
#define 宏名 宏体
其中 define 为宏定义命令;“宏名”遵循标识符命名规则,通常用大写字母表示,以便与变量区
别;“宏体”可以是常数,一个字符串或一段代码等。
例如,编程的时候可以将一个数组的最大长度定义成一个宏:
#define MAXLENGTH 100