内容正文:
第9章 预处理
宏定义
任务一
文件包含
任务二
条件编译
任务三
任务一 宏定义
阶段1 概述
阶段2 无参宏定义
阶段3 带参宏定义
阶段1 概述
所谓预处理,是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
阶段2 无参宏定义
无参宏的宏名后不带参数。其定义的一般形式为:
#define 标识符 字符串
其中,“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令,“define”为宏定义命令,“标识符”为所定义的宏名。“字符串”可以是常数、表达式、格式串等。
此外,常对程序中反复使用的表达式进行宏定义。
阶段3 带参宏定义
C语言允许宏带有参数。在宏定义中的参数称为形式参数, 在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开, 而且要用实参去代换形参。
带参宏定义的一般形式为:
#define 宏名(形参表) 字符串
在字符串中含有各个形参。
带参宏调用的一般形式为:
宏名(实参表);
任务二 文件包含
文件包含命令的功能是把指定的文件插入该命令行位置取代该命令行, 从而把指定的文件和当前的源程序文件连成一个源文件。文件包含命令行的一般形式为:#include"文件名"。
任务三 条件编译
预处理程序提供了条件编译的功能。可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件。这对于程序的移植和调试是很有用的。条件编译有下面3种形式:
任务三 条件编译
一.第一种形式:
#ifdef 标识符
程序段1
#else
程序段2
#endif
任务三 条件编译
二.第二种形式:
#ifndef 标识符
程序段1
#else
程序段2
#endif
任务三 条件编译
三.第三种形式:
#if 常量表达式
程序段1
#else
程序段2
#endif
$$