编译预玫处理 ●●● > 所谓预处理是指,在对源程序进行编译之前 先对源程序中的预处理命令(主要指宏定义命 令、文件包含命令和条件编译命令)进行处理; 然后再将处理的结果,和源程序一起进行编译 以得到目标代码。 >文件包含(#include)和宏定义(#define)都是 编译预处理指令 ·在形式上都以“#开头,不属于C语言中真正的语 句 ·增强了C语言的编程功能,改进C语言程序设计环 高扁程交近 目标要求 为容 课后作业 退出
目标要求 讲课提纲 讲课内容 课后作业 退出 ➢ 所谓预处理是指,在对源程序进行编译之前, 先对源程序中的预处理命令(主要指宏定义命 令、文件包含命令和条件编译命令)进行处理; 然后再将处理的结果,和源程序一起进行编译, 以得到目标代码。 ➢ 文件包含(#include)和宏定义(#define)都是 编译预处理指令 ▪ 在形式上都以“#”开头,不属于C语言中真正的语 句 ▪ 增强了C语言的编程功能,改进C语言程序设计环 境,提高编程效率 编译预处理
编译预处理功能 编译预处理的主要功能 define > 编译预处迅 #include 文件包含(include) 宏定义(#define 编译 宏定义 ·条件编译 文件包含 连接 条件编译 执行 目标要求 讲课提纲 讲课内容 课后作业 K 退出
目标要求 讲课提纲 讲课内容 课后作业 退出 ➢ 编译预处理的主要功能: ▪ 文件包含(#include) ▪ 宏定义(#define) ▪ 条件编译 编译预处理功能 宏定义 文件包含 条件编译 编译预处理 编译 连接 执行 #define #include
●● 宏定义 (一)不带参数的宏定义 (二)带参数宏定义 目标要求 讲课提纲 (讲课内容 课后作业 K 退出
目标要求 讲课提纲 讲课内容 课后作业 退出 宏定义 (一)不带参数的宏定义 (二)带参数宏定义
(一)不带参数的宏定义(简单替换) 用标识符来代表一个字符串。C语言用 概念 “#define'”进行宏定义。C编译系统在编译 前将这些标识符替换成所定义的字符串。 格式 define 标识符 字符串 #define PI 3.1415926 宏名: 宏定义中的标识符称为“宏名” 相关 概念 宏调用:在程序中用宏名替代字符串称为“宏调 用”。 宏展开:在预编译时将宏名替换成字符串的过程称 “宏展开” 目标要求 讲课提纲 讲课内容 课后作业 退出
目标要求 讲课提纲 讲课内容 课后作业 退出 用标识符来代表一个字符串。C语言用 “#define”进行宏定义。C编译系统在编译 前将这些标识符替换成所定义的字符串。 概念 格式 #define 标识符 字符串 相关 概念 宏名: 宏定义中的标识符称为“宏名”。 宏调用:在程序中用宏名替代字符串称为“宏调 用”。 宏展开:在预编译时将宏名替换成字符串的过程称 “宏展开”。 #define PI 3.1415926 (一)不带参数的宏定义(简单替换)
输入圆的半径,求圆的周长、面积和球的体积。要求 ●●● ●● 使用无参宏定义圆周率。 #include <stdio.h> #define PI 3.1415926 void main() 宏展开: length=2*3.1415926*radius; area= float radius,len 3.1415926*radius*radius; volume= printf("Input a 3.1415926*radius*radius*radius*3/4; scanf("%f',&radius)月 length=2*PI*radius; *宏调用,引用无参宏求周长*/ area=PI*radius*radius; /*宏调用,引用无参宏求面积*/ volume=-PI*radius*radius*radius*3/4;/*宏调用,引用无参宏求体积*/ printf("length=%.2farea=%.2f,volume=%.2fn", length, area, volume); 目标要求 讲课提纲 讲课内容 课后作业 退出
目标要求 讲课提纲 讲课内容 课后作业 退出 #include <stdio.h> #define PI 3.1415926 void main() { float radius,length,area,volume; printf("Input a radius: "); scanf("%f",&radius); length=2*PI*radius; /*宏调用,引用无参宏求周长*/ area=PI*radius*radius; /*宏调用,引用无参宏求面积*/ volume=PI*radius*radius*radius*3/4; /*宏调用,引用无参宏求体积*/ printf("length=%.2f,area=%.2f,volume=%.2f\n", length, area, volume); } 例 1 输入圆的半径,求圆的周长、面积和球的体积。要求 使用无参宏定义圆周率。 宏展开: length=2*3.1415926*radius; area= 3.1415926*radius*radius; volume= 3.1415926*radius*radius*radius*3/4;