第九章预处理命令 ■预处理命令概述 ■91宏定义 ■92“文件包含”处理
第九章 预处理命令 ◼ 预处理命令概述 ◼ 9.1 宏定义 ◼ 9.2 “文件包含”处理
预处理命令概述 1.概念 编译预处理是在编译前对源程序进行的一些预加工 预处理由编译系统中的预处理程序,按源程序中的预处理 命令进行 2.预处理命令 C语言的预处理命令均以“#”打头,末尾不加分号 预处理命令可以出现在程序的任何位置, 其作用域是从出现点到所在源程序的末尾 3.优点:能改善程序设计的环境, 有助于编写易移植,易调试的程序
预处理命令概述 1. 概念 编译预处理是在编译前对源程序进行的一些预加工 预处理由编译系统中的预处理程序, 按源程序中的预处理 命令进行 2. 预处理命令 C语言的预处理命令均以“ # ”打头, 末尾不加分号 预处理命令可以出现在程序的任何位置, 其作用域是从出现点到所在源程序的末尾 3. 优点 : 能改善程序设计的环境, 有助于编写易移植, 易调试的程序
91宏定义 称为宏名 不带参数的宏定义 1格式:#dene标识符字符串一为宏体 2.说明: (1)标识符也称宏名,一般用大写字母表示 (2)预处理时将程序中所有的宏名用宏体替换,该过程称 使“宏展开”;但在程序中用“”括起来的字符串中,即 有的字符串与宏名相同,也不进行替换 #define SIze 20 void main o 输出结果:SIZE=35 int x, X= SIZE+I5 printf(“sLE=%dmn”,x);
9.1 宏定义 一、 不带参数的宏定义 1. 格式 : #define 标识符 字符串 2. 说明 : (1) 标识符也称宏名, 一般用大写字母表示 (2) 预处理时将程序中所有的宏名用宏体替换, 该过程称 “宏展开”; 但在程序中用“ ” 括起来的字符串中, 即 使 有的字符串与宏名相同, 也不进行替换 #define SIZE 20 void main ( ) { int x ; x = SIZE+15 ; printf( “ SIZE=%d \n”, x ) ; } 称为宏体 输出结果: SIZE=35 称为宏名
(3)宏定义只是一种简单的字符替代,不进行语法检查 若将# define SIzE20的零写成英文字母“o°, 程序中的x=SE+15;会替换为x=20+15; 这时才会发现错误 (4)宏定义不是C语句,行末不加分号, 每条宏命令要单独占一行 (5)# define命令出现在函数的外部,宏名的有效范围为 定义命令之后到本文件结束 (6)可以用# undef命令终止宏定义的作用域
(3) 宏定义只是一种简单的字符替代, 不进行语法检查 若将#define SIZE 20 的零写成英文字母‘o’, 程序中的 x = SIZE+15 ; 会替换为x = 2o+15; 这时才会发现错误 (4) 宏定义不是C语句, 行末不加分号, 每条宏命令要单独占一行 (5) #define命令出现在函数的外部, 宏名的有效范围为 定义命令之后到本文件结束 (6) 可以用#undef 命令终止宏定义的作用域
(7)宏定义可以嵌套使用 例# define10 #define w 20 #define s Lxw (8)宏定义与变量定义不同,它只作字符替换, 不分配内存空间 3.使用宏替换的优点:提高程序的可读性,易于修改 带参数的宏定义 1.格式:# define宏名(形参表)字符串
(7) 宏定义可以嵌套使用 例 #define L 10 #define W 20 #define S L*W (8) 宏定义与变量定义不同, 它只作字符替换, 不分配内存空间 3. 使用宏替换的优点: 提高程序的可读性, 易于修改 二、 带参数的宏定义 1. 格式 : #define 宏名( 形参表) 字符串