清华大学:《C语言》课程教学课件(PPT讲稿)第九章 预处理命令

清华大学出版社 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讲稿)第八章 函数.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第七章 数组.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第六章 循环控制.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第五章 选择结构程序设计.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第四章 最简单的C程序设计.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第三章 数据类型、运算符与表达式.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第二章 程序的灵魂一算法.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第一章 C语言概述.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十四章 常见错误和程序调试.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十三章 文件.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十二章 位运算.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十一章 结构体与共用体.ppt
- 清华大学:《C语言》课程教学课件(PPT讲稿)第十章 指针.ppt
- 《实用网络配置指南》参考书籍PDF电子书(初级篇).doc
- 《VISUAL C++程序设计基础》(PPT教学课件)第四章 函数.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第十章 异常处理.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第十一章 标准模板库(STL).ppt
- 《VISUAL?C++程序设计基础》(PPT教学课件)第六章 指针与数组.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第八章 继承与多态.ppt
- 《VISUAL C++程序设计基础》(PPT教学课件)第五章 类与对象.ppt
- 《C语言》课程教学课件(PPT讲稿)第七章 编译预处理.ppt
- Problem A(文献资料)A Careful Approach.pdf
- 西南财经大学:《数据库系统原理》课程教学资源(教学大纲).doc
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第十章 数据库完整性.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一章 绪论(1.1-1.2)数据库系统概述、数据模型.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一章 绪论(1.1-1.2)数据库系统概述、数据模型.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一章 绪论(1.2-1.6).ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一章 绪论(1.2-1.6).ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第二章 关系数据库(2.1、2.2、2.3).ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第二章 关系数据库(2.4、2.5、2.6).ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第三章 关系数据库标准语言SQL(3.1-3.2)SQL概述、数据定义.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第三章 关系数据库标准语言SQL(3.3)查询.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第三章 关系数据库标准语言SQL(3.4-3.5)数据更新、视图.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第三章 关系数据库标准语言SQL(3.6-3.8)数据控制、嵌入式SQL、小结.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第四章 关系系统及其查询优化.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第五章 关系数据理论.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第六章 数据库设计(6.1-6.2)数据库设计概述、需求分析.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第六章 数据库设计(6.3)概念结构设计.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第六章 数据库设计(6.4)逻辑结构设计.ppt
- 中国人民大学:《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第六章 数据库设计(6.5、6.6、6.7、6.8).ppt