清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第9章_预处理命令

清华大学出版社 TSINGHUA UNIVERSITY PRESS 第九章 预处理命令
第九章

清华大学出版社 TSINGHUA UNIVERSITY PRESS 本章要点 预处理的概念 C语言处理系统的预处理功能 ●预处理命令的使用
⚫ 本章要点 •预处理的概念 •C语言处理系统的预处理功能 •预处理命令的使用

清华大学出版社 TSINGHUA UNIVERSITY PRESS ●主要内容 91宏定义 9.2“文件包含”处理 9.3条件编译
⚫ 主要内容 9.1 宏定义 9.2“文件包含”处理 9.3 条件编译

清华大学出版社 TSINGHUA UNIVERSITY PRESS 基本概念 ANSI C标准规定可以在C源程序中加入一些 预处理命令″,以改进程序设计环境,提 高编程效率。 这些预处理命令是由ANSⅠC统一规定的,但 是它不是C语言本身的组成部分,不能直接对 它们进行编译(因为编译程序不能识别它们) 必须在对程序进行通常的编译之前,先对程 序中这些特殊的命令进行“预处理” 经过预处理后程序可由编译程序对预处理后的 源程序进行通常的编译处理,得到可供执行的 目标代码。 4
4 基本概念 • ANSI C标准规定可以在C源程序中加入一些 “预处理命令” ,以改进程序设计环境,提 高编程效率。 • 这些预处理命令是由ANSI C统一规定的,但 是它不是C语言本身的组成部分,不能直接对 它们进行编译(因为编译程序不能识别它们) 。必须在对程序进行通常的编译之前,先对程 序中这些特殊的命令进行“预处理” 。 • 经过预处理后程序可由编译程序对预处理后的 源程序进行通常的编译处理,得到可供执行的 目标代码

清华大学出版社 TSINGHUA UNIVERSITY PRESS 基本概念 ·C语言与其他高级语言的一个重要区别是可以 使用预处理命令和具有预处理的功能。 C提供的预处理功能主要有以下三种 1.宏定义 2.文件包含 3.条件编译 这些功能分别用宏定义命令、文件包含命令 条件编译命令来实现。为了与一般C语句相 区别,这些命令以符号“#”开头。例如 #define #include 5
5 基本概念 • C语言与其他高级语言的一个重要区别是可以 使用预处理命令和具有预处理的功能。 C提供的预处理功能主要有以下三种: 1.宏定义 2.文件包含 3.条件编译 这些功能分别用宏定义命令、文件包含命令 、条件编译命令来实现。为了与一般C语句相 区别,这些命令以符号“#”开头。例如: #define #include

清华大学出版社 TSINGHUA UNIVERSITY PRESS 9.1宏定义 91.1不带参数的宏定义 宏定义一般# define标识符字符串 形式为:例如:# define pi31415926 宏定义的作用是在本程序文件中用指定的标识符PI 来代替“3.1415926这个字符串,在编译预处理时 ,将程序中在该命令以后出现的所有的P都用 3.1415926”代替。这种方法使用户能以一个简单 的名字代替个长的字符串。 这个标识符(名字)称为“宏名 在预编译时将宏名替换成字符串的过程称为“宏展 开”。# define是宏定义命令 6
6 9.1 宏定义 9.1.1 不带参数的宏定义 宏定义一般 形式为: #define 标识符 字符串 例如:# define PI 3.1415926 • 宏定义的作用是在本程序文件中用指定的标识符PI 来代替“3.1415926”这个字符串,在编译预处理时 ,将程序中在该命令以后出现的所有的PI都用 “3.1415926”代替。这种方法使用户能以一个简单 的名字代替一个长的字符串。 • 这个标识符(名字)称为“宏名” 。 • 在预编译时将宏名替换成字符串的过程称为“宏展 开” 。#define是宏定义命令

清华大学出版社 TSINGHUA UNIVERSITY PRESS 例9.1使用不带参数的宏定义。 #include #define pi 3. 1415926 void maino float l,s, rV printf("input radius: ) scanf("%f &r) l=2.0*PIr; s=PIror. v=4.0/3*Pir*r*r printf(l=%104f\ns=%104fnv=%104f\n",L,S, v) 7
7 #include #define PI 3.1415926 void main() {float l,s,r,v; printf("input radius:"); scanf("%f",&r); l=2.0*PI*r; s=PI*r*r; v=4.0/3*PI*r*r*r; printf("l=%10.4f\ns=%10.4f\nv=%10.4f\n",l,s,v); } 例9.1 使用不带参数的宏定义

清华大学出版社 TSING 运行情况如下: 1=25.1328 s=50.2655 input radius:4K 说明: V=150.7966 (1)宏名一般习惯用大写字母表示,以便与变量名相 区别。但这并非规定,也可用小写字母。 (2)使用宏名代替一个字符串,可以减少程序中重复 书写某些字符串的工作量。 (3)宏定义是用宏名代替一个字符串,只作简单置换 ,不作正确性检查。只有在编译已被宏展开后的 源程序时才会发现语法错误并报错。 8
8 input radius: 4↙ 运行情况如下: 1=25.1328 s=50.2655 v=150.7966 (1) 宏名一般习惯用大写字母表示,以便与变量名相 区别。但这并非规定,也可用小写字母。 (2) 使用宏名代替一个字符串,可以减少程序中重复 书写某些字符串的工作量。 (3) 宏定义是用宏名代替一个字符串,只作简单置换 ,不作正确性检查。只有在编译已被宏展开后的 源程序时才会发现语法错误并报错。 说明:

清华大学出版社 TSINGHUA UNIVERSITY PRESS 说明: (4)宏定义不是C语句,不必在行未加分号。如果加 了分号则会连分号一起进行置换。 (5)# define命令出现在程序中函数的外面,宏名 的有效范围为定义命令之后到本源文件结束。通 常,# define命令写在文件开头,函数之前,作 为文件一部分,在此文件范围内有效。 (6)可以用# undef命令终止宏定义的作用域。 例如 9
9 (4) 宏定义不是C语句,不必在行末加分号。如果加 了分号则会连分号一起进行置换。 (5) #define命令出现在程序中函数的外面,宏名 的有效范围为定义命令之后到本源文件结束。通 常,#define命令写在文件开头,函数之前,作 为文件一部分,在此文件范围内有效。 (6) 可以用#undef命令终止宏定义的作用域。 例如: 说明:

清华大学出版社 TSINGHUA UNIVERSITY PRESS #define g 9.8 void maino G的有效范围 #undef g f10 在f1函数中,G不再代表 9.8。这样可以灵活控制宏 定义的作用范围。 10
10 #define G 9.8 _______ void main() ↑ { G的有效范围 … } -----↓---- #undef G f1() { … } 在f1函数中,G不再代表 9.8。这样可以灵活控制宏 定义的作用范围
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第8章_函数.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第7章_数组.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第6章_循环控制.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第5章_选择结构程序设计.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第4章_最简单的c程序设计.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第3章_数据类型、运算符与表达式.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第2章_程序的灵魂(算法).ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第1章_C语言概述.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第14章_常见错误和程序调试.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第13章_文件.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第12章_位运算.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第11章_结构体与共用体.ppt
- 清华大学出版社:《C语言程序设计》教材电子教案(PPT课件,第三版)第10章_指针.ppt
- 华中理工大学:《单片机原理与应用》课程电子教案(PPT课件讲稿)目录.ppt
- 华中理工大学:《单片机原理与应用》课程电子教案(PPT课件讲稿)第八章 微型计算机接口技术.ppt
- 华中理工大学:《单片机原理与应用》课程电子教案(PPT课件讲稿)第七章 I/O接口电路.ppt
- 华中理工大学:《单片机原理与应用》课程电子教案(PPT课件讲稿)第六章 输入/输出及中断系统.ppt
- 华中理工大学:《单片机原理与应用》课程电子教案(PPT课件讲稿)第五章 半导体存储器及其应用.ppt
- 华中理工大学:《单片机原理与应用》课程电子教案(PPT课件讲稿)第四章 汇编语言程序设计.ppt
- 华中理工大学:《单片机原理与应用》课程电子教案(PPT课件讲稿)第三章 计算机指令系统.ppt
- 东北电力大学:《C语言程序设计》WORD讲义.doc
- 东北电力大学:《C语言程序设计》C语言实验上机指导.doc
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第10章 指针.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第11章 结构体与共用体.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第12章 位运算.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第13章 文件.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第1章 C语言概述.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第2章 程序的灵魂-算法.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第3章 数据类型、运算符与表达式.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第4章 顺序结构程序设计.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第5章 选择结构程序设计.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第6章 循环结构程序设计.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第7章 数组.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第8章 函数.ppt
- 东北电力大学:《C语言程序设计》课程教学资源(PPT课件)第9章 预处理命令.ppt
- 北大青鸟:《SQLServer数据库》PPT教学课件 第一章 SQL Server数据库基础.ppt
- 北大青鸟:《SQLServer数据库》PPT教学课件 第二章 SQL Server数据库表管理.ppt
- 北大青鸟:《SQLServer数据库》PPT教学课件 第三章 SQL Server数据管理.ppt
- 北大青鸟:《SQLServer数据库》PPT教学课件 第四章 数据查询(1).ppt
- 北大青鸟:《SQLServer数据库》PPT教学课件 第五章 数据查询(2).ppt