C语言课件PPT第9章(简化版)概要1
第9章 预处理命令 所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果和源程序一起进行编译,以得到目标代码。 C语言提供的预处理功能主要有三种:宏定义、文件包含、条件编译 所有的预处理命令都是以“#”开头的。 9.1 宏定义 在C语言中,宏分为无参宏有参宏两种。 9.1.2 带参数的宏定义 1.带参宏定义的一般格式 #define 宏名(形参表) 字符串 如: #define S(a,b) a*b #define L(a,b) (a+b)*2 9.1.2 带参数的宏定义 2.带参宏的调用和宏展开 调用格式:宏名(实参表) 9.1.2 带参数的宏定义 为了避免出错,可以在所有形参外,均加上一对圆括号。 如: #define S(r) 3.14*(r)*(r) 则: area=S(a+b); 展开后为: area=3.14*(a+b)*(a+b); 9.1.2 带参数的宏定义 [例9-2] 用宏定义求圆的面积 #define PI 3.14 #define S(r) PI*r*r main() { float a,area; scanf("%f",&a); area=S(a); printf("\nr=%f,area=%f",a,area); getch(); } 9.2 文件包含处理 1.文件包含的概念 文件包含是指,一个源文件可以将另一个源文件的全部内容包含进来。 2.文件包含处理命令的格式 #include “文件名” #include * * 第9章 预处理命令 1. 无参宏定义的一般格式 #define 标识符 字符串 如: #define PI 3.1415926 #define PRICE 30 带参宏展开只是将形参简单地置换为实参 如: #define S(r) 3.14*r*r area1=S(a); 展开后为: area1=3.14*a*a; area2=S(a+b);展开后为: area2=3.14*a+b*a+b; 运行程序 两种格式的区别仅在于: (1)使用“ ”:系统首先到当前目录下查找被包含文件,如果没找到,再到系统指定的“包含文件目录” 去查找。 (2)使用< >:直接到系统指定的“包含文件目录”(include)去查找。