第九章 编谇预处理 重庆工学院 9 计算机科学与工程学院 基础条
重庆工学院 计算机科学与工程学院 9 基础系 第九章 编译预处理
第九章编译预处理 °编译预处理 ◆宏定义◆文件包含◆条件编译 【编译】C编译系统对源程序进行:词法和语法 分析,代码生成,优化→.OB丿文件 【编译预处理〗编译前对源程序进行一些预加工 改善程序设计环境/模块化设计) °编译预处理命令均以#开头,未尾不加分号 °可出现在程序的任何位置,其作用范围:出现 点至所在源程序未尾。 2重庆工学院计算机科学与工程学院基础系20212月20日星期六
第九章 编译预处理 2 重庆工学院计算机科学与工程学院 基础系 2021年2月20日星期六 ◆宏定义 ◆文件包含 ◆条件编译 【编译】C编译系统对源程序进行:词法和语法 分析,代码生成,优化 → .OBJ文件 【编译预处理】编译前对源程序进行一些预加工 (改善程序设计环境/模块化设计) • 编译预处理命令均以#开头,未尾不加分号 • 可出现在程序的任何位置,其作用范围:出现 点至所在源程序未尾。 • 编译预处理
第九章编译预处理 预处理功能 C语言的预处理程序负责分析和处理以“#为首字符 的预处理控制行。预处理是在编译前进行的。 预处理控制行主要有 宏替换、文件包含、条件编译和行控制等。 宏替换 define预处理命令不仅可以定义符号常量及字符串, 而且也可以定义带参数的宏。 简单的字符串替换 般形式 # define宏标识符字符串 通常“宏标识符”用大写字母表示,用空格分开,末尾不 带“;”,以换行符结束。 3重庆工学院计算机科学与工程学院基础系021月20日星期六 ≤D<面
第九章 编译预处理 3 重庆工学院计算机科学与工程学院 基础系 2021年2月20日星期六 预处理功能 C语言的预处理程序负责分析和处理以“#”为首字符 的预处理控制行。预处理是在编译前进行的。 预处理控制行主要有: 宏替换、文件包含、条件编译和行控制等。 宏替换 define预处理命令不仅可以定义符号常量及字符串, 而且也可以定义带参数的宏。 1. 简单的字符串替换 一般形式 #define 宏标识符 字符串 通常“宏标识符”用大写字母表示,用空格分开,末尾不 带“ ;” , 以换行符结束
第九章编译预处理 例如: #definen 10 #define true -1 #define false o #define on 1 #define off o #define yes 1 #define no o #define pi 3.14159 #define e 2.7183 #define black o #define blue 1 #define begin i #define end j 重庆工学院计算机科学与工程学院基础系 2021年2月20日星期六
第九章 编译预处理 4 重庆工学院计算机科学与工程学院 基础系 2021年2月20日星期六 例如: #define N 10 #define TRUE -1 #define FALSE 0 #define ON 1 #define OFF 0 #define YES 1 #define NO 0 #define PI 3.14159 #define E 2.7183 #define BLACK 0 #define BLUE 1 #define BEGIN { #define END }
第九章编译预处理 使用宏替换可增加程序的可移植型 例如:在程序中定义显示工作摸式为640*350, # defineⅩMAX639 #define YMAM 349 当改为1024*1024时,可定义如下: #define XMAX 1023 #define YMAX 1023 这就增加了图形程序对硬件环境的适应性 带参宏定义及宏调用 与函数可带形式参数一样,宏标识符也可带有参数。 在程序中可用实参数替带形式参数,实现宏调用。 重庆工学院计算机科学与工程学院基础系 2021年2月20日星期六
第九章 编译预处理 5 重庆工学院计算机科学与工程学院 基础系 2021年2月20日星期六 使用宏替换可增加程序的可移植型。 例如:在程序中定义显示工作摸式为640*350, #define XMAX 639 #define YMAM 349 当改为1024*1024时,可定义如下: #define XMAX 1023 #define YMAX 1023 这就增加了图形程序对硬件环境的适应性。 2. 带参宏定义及宏调用 与函数可带形式参数一样,宏标识符也可带有参数。 在程序中可用实参数替带形式参数,实现宏调用