清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第9章 预处理命令

第9章预处理命令(1学时) C提供的预处理功能主要有三种 1.宏定义 2.文件包含 3.条件编译 预处理命令都以符号“#”开头 如:# define Include fif sftelse-itendif
第9章 预处理命令(1学时) • C提供的预处理功能主要有三种: 1. 宏定义 2. 文件包含 3. 条件编译 • 预处理命令都以符号“#”开头 • 如:#define • #include • #if ~#else~#endif

宏定义 不带参数的宏定义 格式:# define标识符。字符串 如 #define 3.1415926 作用:用标识符P代替“3.1415926” 符串 以一个简单的名字代替一个长字符串 在预编译时进行宏展开
宏定义 • 不带参数的宏定义 • 格式: #define 标识符 字符串 • 如: #define PI 3.1415926 • 作用:用标识符PI代替“3.1415926” 字 符串 • 以一个简单的名字代替一个长字符串 在预编译时进行宏展开

可以用# undef命令终止宏定义的作用域 进行宏定义时,可以引用已定义的宏名,可以 层置换 例92 1. #defineR 3.0 2.# define F3.1415926 3. #define L 2*P*R 4. #define S P*R*R 5. main( 6.{ 7. printf("L=%f\nS=%fn" L, S); 8.} 9.结果:L=18849556 10 S=28.274333
• 可以用#undef命令终止宏定义的作用域 • 在进行宏定义时,可以引用已定义的宏名,可以 层层置换 • 例9.2 1. #define R 3.0 2. #define PI 3.1415926 3. #define L 2*PI*R 4. #define S PI*R*R 5. main( ) 6. { 7. printf("L=%f\nS=%f\n",L,S); 8. } 9. 结果:L=18.849556 10. S=28.274333

·L展开后为:2*3.141592*30 ·S展开后为:3.141592*3.0*30 对程序中用双引号扩起来的字符串内的字 符不进行置换 宏定义与变量的定义不同,只作字符替换, 不分配内存空间
• L展开后为:2*3.141592*3.0 • S展开后为:3.141592*3.0*3.0 • 对程序中用双引号扩起来的字符串内的字 符不进行置换 • 宏定义与变量的定义不同,只作字符替换, 不分配内存空间

带参的宏定义 格式:# define宏名(参数表)字符串 如:# define s(a,b)a"b area=S(3, 2) 展开后:area=3*2 例93 1.# define f3.1415926 2. #define s(r) PIrr 3. main() 4. float a, area 5.a=3.6 6. area=S(a) printf(r=%f\narea=%fn", area); 1
带参的宏定义 • 格式:#define 宏名(参数表) 字符串 • 如:#define S(a,b) a*b • area=S(3,2); • 展开后:area=3*2; • 例9.3 1. #define PI 3.1415926 2. #define S(r) PI*r*r 3. main( ) 4. {float a,area; 5. a=3.6; 6. area=S(a); 7. printf("r=%f\narea=%f\n",area);}

运行结果:「=3600000 area=40.715038 赋值语句area=S(a);经宏展开后为: area=3.1415926a*a 讨论: 带参的宏改为:area=S(a+b) 经宏展开后的表达式为 areas*a+b* a+b 等同于:area=(P|*a)+(b*a)+b 正确用法:# define s(r)P()()
• 运行结果:r=3.600000 • area=40.715038 • 赋值语句area=S(a);经宏展开后为: • area=3.1415926*a*a; • 讨论: • 带参的宏改为:area=S(a+b); • 经宏展开后的表达式为: • area=PI*a+b*a+b; • 等同于:area=(PI*a)+(b*a)+b; • 正确用法: #define S(r) PI*(r)*(r)

“文件包含”处理 一个源文件可以将另一个源文件的全部内 容包含进来称“文件包含” 格式:# nclude“文件名” 或# include file lc file1.c file2. c include<file2 CKr B B A A 文件包含的使用可以节省设计人员的重复 劳动。如,符号常量的加载
“文件包含”处理 • 一个源文件可以将另一个源文件的全部内 容包含进来称“文件包含” • 格式:#include “文件名” • 或 #include • 文件包含的使用可以节省设计人员的重复 劳动。如,符号常量的加载 file1.c file2.c include A B file1.c A B

条件编译 当条件满足时对一组语句进行编译,香则 对另一组语句进行编译 格式: #fdef标识符 程序段1 ifelse 程序段2] fendi
条件编译 • 当条件满足时对一组语句进行编译,否则 对另一组语句进行编译 (1) • 格式: #ifdef 标识符 程序段1 [#else 程序段2] #endif

(2) 格式: # indef标识符 程序段1 felse 程序段2] iendif
(2) • 格式: #ifndef 标识符 程序段1 [#else 程序段2] #endif

(3) 格式: f表达式 程序段1 ielse 程序段2 iendif
(3) • 格式: #if 表达式 程序段1 #else 程序段2 #endif
按次数下载不扣除下载券;
注册用户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课件讲稿)第13章 文件.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第12章 位运算.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第11章 结构体与共用体.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)第10章 指针.ppt
- 清华大学出版社:《C语言程序设计》课程教学资源(PPT课件讲稿)Introduction To Computers.ppt
- 西北工业大学:《软件工程》课程教学资源(PPT课件讲稿,主讲:谢明忠,共六章).ppt
- 计算机信息技术_基础知识测试题一(计算机基础知识).doc
- 计算机信息技术_计算机信息技术习题4.doc
- 计算机信息技术_计算机信息技术习题3.doc
- 计算机信息技术_计算机信息技术习题2.doc
- 计算机信息技术_计算机信息技术习题1.doc
- 西北工业大学计算机系:计算机信息技术(PPT教学课件).ppt
- 电子科技大学《Delphi程序设计》_delphi应用.ppt
- 电子科技大学《Delphi程序设计》_delphi组件.ppt
- 电子科技大学《Delphi程序设计》_delphi语法基础.ppt
- 电子科技大学《Delphi程序设计》_认识delphi.ppt
- 电子科技大学《Delphi程序设计》_面向对象程序设计基础.ppt
- VC++程序设计_AnlexVC++1(英文).ppt
- VC++程序设计_AnlexVC++2(英文).ppt
- VC++程序设计_AnlexVC++3(英文).ppt
- VC++程序设计_AnlexVC++4(英文).ppt
- VC++程序设计_AnlexVC++5(英文).ppt
- VC++程序设计_AnlexVC++6(英文).ppt
- VC++程序设计_VisualC++(英文).doc
- 复旦大学:《数据库系统教程》电子教案(PPT教学课件)目录.ppt
- 复旦大学:《数据库系统教程》电子教案(PPT教学课件)第10章 中间件技术.ppt
- 复旦大学:《数据库系统教程》电子教案(PPT教学课件)第11章 数据库与WWW.ppt
- 复旦大学:《数据库系统教程》电子教案(PPT教学课件)第12章 XML技术.ppt
- 复旦大学:《数据库系统教程》电子教案(PPT教学课件)第1章 数据库概论.ppt
- 复旦大学:《数据库系统教程》电子教案(PPT教学课件)第2章 关系模型和关系运算理论.ppt
- 复旦大学:《数据库系统教程》电子教案(PPT教学课件)第3章 关系数据库语言SQL.ppt
- 复旦大学:《数据库系统教程》电子教案(PPT教学课件)第4章 关系数据库的规范化设计.ppt