C程序设计(第3版)谭浩强110最新版ppt课件

上传人:资****亨 文档编号:287762678 上传时间:2022-05-04 格式:PPT 页数:21 大小:461.50KB
返回 下载 相关 举报
C程序设计(第3版)谭浩强110最新版ppt课件_第1页
第1页 / 共21页
C程序设计(第3版)谭浩强110最新版ppt课件_第2页
第2页 / 共21页
C程序设计(第3版)谭浩强110最新版ppt课件_第3页
第3页 / 共21页
C程序设计(第3版)谭浩强110最新版ppt课件_第4页
第4页 / 共21页
C程序设计(第3版)谭浩强110最新版ppt课件_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《C程序设计(第3版)谭浩强110最新版ppt课件》由会员分享,可在线阅读,更多相关《C程序设计(第3版)谭浩强110最新版ppt课件(21页珍藏版)》请在金锄头文库上搜索。

1、1整理ppt第第10章章 预处理命令预处理命令2整理ppt C C C C语言的一个重要特征是它的语言的一个重要特征是它的语言的一个重要特征是它的语言的一个重要特征是它的预处理功能预处理功能预处理功能预处理功能。我们知道,一。我们知道,一。我们知道,一。我们知道,一个高级语言源程序在计算机上运行,必须先用编译程序将其个高级语言源程序在计算机上运行,必须先用编译程序将其个高级语言源程序在计算机上运行,必须先用编译程序将其个高级语言源程序在计算机上运行,必须先用编译程序将其翻译为机器语言。编译包括词法分析、语法分析、代码生成、翻译为机器语言。编译包括词法分析、语法分析、代码生成、翻译为机器语言。编

2、译包括词法分析、语法分析、代码生成、翻译为机器语言。编译包括词法分析、语法分析、代码生成、代码优化等步骤,有时在编译之前还要做某些预处理工作,代码优化等步骤,有时在编译之前还要做某些预处理工作,代码优化等步骤,有时在编译之前还要做某些预处理工作,代码优化等步骤,有时在编译之前还要做某些预处理工作,如去掉注释,变换格式等。如去掉注释,变换格式等。如去掉注释,变换格式等。如去掉注释,变换格式等。C C C C语言允许在源程序中包含预处理语言允许在源程序中包含预处理语言允许在源程序中包含预处理语言允许在源程序中包含预处理命令,在正式编译之前(词法分析之前)系统先对这些命令命令,在正式编译之前(词法分

3、析之前)系统先对这些命令命令,在正式编译之前(词法分析之前)系统先对这些命令命令,在正式编译之前(词法分析之前)系统先对这些命令进行进行进行进行“ “预处理预处理预处理预处理” ”,然后整个源程序再进行通常的编译处理。,然后整个源程序再进行通常的编译处理。,然后整个源程序再进行通常的编译处理。,然后整个源程序再进行通常的编译处理。从语法上讲,这些预处理命令不是从语法上讲,这些预处理命令不是从语法上讲,这些预处理命令不是从语法上讲,这些预处理命令不是C C C C语言的一部分,但使用它语言的一部分,但使用它语言的一部分,但使用它语言的一部分,但使用它们却扩展了们却扩展了们却扩展了们却扩展了C C

4、 C C语言程序设计的环境,可以简化程序开发过程,语言程序设计的环境,可以简化程序开发过程,语言程序设计的环境,可以简化程序开发过程,语言程序设计的环境,可以简化程序开发过程,提高程序的可读性,也更有利于移植和调试提高程序的可读性,也更有利于移植和调试提高程序的可读性,也更有利于移植和调试提高程序的可读性,也更有利于移植和调试C C C C语言程序。本章语言程序。本章语言程序。本章语言程序。本章主要介绍主要介绍主要介绍主要介绍宏定义宏定义宏定义宏定义、文件包括文件包括文件包括文件包括和和和和条件编译条件编译条件编译条件编译等预处理命令。等预处理命令。等预处理命令。等预处理命令。 3整理ppt源

5、程序生成执行文件的过程:源程序生成执行文件的过程:源程序生成执行文件的过程:源程序生成执行文件的过程:.c .c或或或或.cpp.cpp编译编译编译编译.obj.obj链接链接链接链接.exe.exe#include #include #define PI 3.14159#define PI 3.14159void main ( )void main ( ) float r = 4; float r = 4; printf (“s = %fn”, PI*r*r); printf (“s = %fn”, PI*r*r); 预处理命令预处理命令预处理命令预处理命令预处理预处理预处理预处理本章讨论之

6、本章讨论之本章讨论之本章讨论之重点!重点!重点!重点!4整理ppt10.1 预处理命令简介 预处理命令:预处理命令:预处理命令:预处理命令:C C C C源程序中以源程序中以源程序中以源程序中以# # # #开头、以换行符结尾的行开头、以换行符结尾的行开头、以换行符结尾的行开头、以换行符结尾的行 种类:种类:种类:种类:l l 宏定义宏定义宏定义宏定义 #define#define、#undef#undefl l 文件包含文件包含文件包含文件包含 #include#includel l 条件编译条件编译条件编译条件编译 #if#if、#ifdef#ifdef、#else#else、#elif#

7、elif、#endif#endif等等等等l l 其他其他其他其他 #line#line、#error#error、#program#program等等等等本章主要讨论的本章主要讨论的本章主要讨论的本章主要讨论的内容!内容!内容!内容! 格式:格式:格式:格式:l l “#” “#”开头开头开头开头l l 占单独书写行占单独书写行占单独书写行占单独书写行l l 语句尾不加分号语句尾不加分号语句尾不加分号语句尾不加分号5整理ppt10.2 宏定义 宏定义分为两种:宏定义分为两种:宏定义分为两种:宏定义分为两种:不带参数的宏定义不带参数的宏定义不带参数的宏定义不带参数的宏定义和和和和带参数的宏定义

8、带参数的宏定义带参数的宏定义带参数的宏定义。 1 1 1 1、不带参数的宏定义、不带参数的宏定义、不带参数的宏定义、不带参数的宏定义 一般形式一般形式一般形式一般形式 #define #define 标识符标识符标识符标识符 单词串单词串单词串单词串指令名称指令名称指令名称指令名称宏名,被定义代表宏名,被定义代表宏名,被定义代表宏名,被定义代表后面的单词串后面的单词串后面的单词串后面的单词串 宏体,是宏的内宏体,是宏的内宏体,是宏的内宏体,是宏的内容文本容文本容文本容文本 可缺省,表示宏名可缺省,表示宏名可缺省,表示宏名可缺省,表示宏名定义过或取消宏体定义过或取消宏体定义过或取消宏体定义过或取

9、消宏体 功能功能功能功能 用指定标识符用指定标识符用指定标识符用指定标识符( ( ( (宏名宏名宏名宏名) ) ) )代替字符序列代替字符序列代替字符序列代替字符序列( ( ( (宏体宏体宏体宏体) ) ) )如如如如 #define YES 1#define YES 1 #define NO 0 #define NO 0 #define PI 3.1415926 #define PI 3.1415926 #define OUT printf(“Hello,World”); #define OUT printf(“Hello,World”);#define #define SIZE SIZE

10、10 10#define #define INT_STRINT_STR %d%d void main ( )void main ( ) int a int aSIZESIZE, i; , i; for (i = 0; i for (i = 0; i = 0; i-) - 1; i = 0; i-) printf ( printf (INT_STRINT_STR, ai); , ai); 宏定义宏定义宏定义宏定义void main ( )void main ( ) int a int a1010, i; , i; for (i = 0; i for (i = 0; i = 0; i-) - 1;

11、 i = 0; i-) printf ( printf (%d%d, ai); , ai); 预编译预编译预编译预编译处理后处理后处理后处理后 注意:宏替换时仅仅是将源程序中与宏名相同的注意:宏替换时仅仅是将源程序中与宏名相同的注意:宏替换时仅仅是将源程序中与宏名相同的注意:宏替换时仅仅是将源程序中与宏名相同的标识符替换成宏的内容文本,并不对宏的内容文本做标识符替换成宏的内容文本,并不对宏的内容文本做标识符替换成宏的内容文本,并不对宏的内容文本做标识符替换成宏的内容文本,并不对宏的内容文本做任何处理。任何处理。任何处理。任何处理。6整理ppt 宏定义注意事项宏定义注意事项宏定义注意事项宏定义注

12、意事项 l l C C C C程序员通常用程序员通常用程序员通常用程序员通常用大写字母大写字母大写字母大写字母来定义宏名,以便与变量名区别。来定义宏名,以便与变量名区别。来定义宏名,以便与变量名区别。来定义宏名,以便与变量名区别。 如:如:如:如: #define #define PIPI 3.14159 3.14159l l 宏定义的宏定义的宏定义的宏定义的位置任意位置任意位置任意位置任意,但,但,但,但一般放在函数外面一般放在函数外面一般放在函数外面一般放在函数外面。 l l 宏定义时,如果单词串太长,需要写多行,可以在行尾宏定义时,如果单词串太长,需要写多行,可以在行尾宏定义时,如果单词

13、串太长,需要写多行,可以在行尾宏定义时,如果单词串太长,需要写多行,可以在行尾使用反斜线使用反斜线使用反斜线使用反斜线“ “ ” ”续行符续行符续行符续行符 例如:例如:例如:例如:#define LONG_STRING this is a very long string that is#define LONG_STRING this is a very long string that is used as an exampleused as an examplel l 宏名的宏名的宏名的宏名的作用域作用域作用域作用域是从是从是从是从#define#define定义之后直到该宏定义所在文定

14、义之后直到该宏定义所在文定义之后直到该宏定义所在文定义之后直到该宏定义所在文件结束件结束件结束件结束 l l #undef#undef#undef#undef可可可可终止宏名作用域终止宏名作用域终止宏名作用域终止宏名作用域#undef #undef 标识符标识符标识符标识符#define YES 1#define YES 1void main ( )void main ( ) . . #undef YES#undef YES#define YES 0#define YES 0void max ( )void max ( ) . . YESYES原作用域原作用域原作用域原作用域YESYES新新新

15、新作用域作用域作用域作用域l l 宏定义可以宏定义可以宏定义可以宏定义可以嵌套定义嵌套定义嵌套定义嵌套定义,但不能递归定义,但不能递归定义,但不能递归定义,但不能递归定义 #define R 2.0 #define R 2.0 #define PI 3.14159#define PI 3.14159#define L 2*PI*R (#define L 2*PI*R ( ) )#define S PI*R*R (#define S PI*R*R ( ) )#define M M + 10 (#define M M + 10 ( ) )l l 程序中字符串常量即双引号中的字符,不作为宏进行宏程序

16、中字符串常量即双引号中的字符,不作为宏进行宏程序中字符串常量即双引号中的字符,不作为宏进行宏程序中字符串常量即双引号中的字符,不作为宏进行宏替换操作替换操作替换操作替换操作 #define XYZ this is a test #define XYZ this is a test printf(XYZ);printf(XYZ);输出:输出:输出:输出:XYZXYZ,而不是:,而不是:,而不是:,而不是:this is a testthis is a test。7整理ppt 宏定义注意事项宏定义注意事项宏定义注意事项宏定义注意事项 l l 宏定义一般以宏定义一般以宏定义一般以宏定义一般以换行结束换行结束换行结束换行结束,不要用分号结束,以免引起不,不要用分号结束,以免引起不,不要用分号结束,以免引起不,不要用分号结束,以免引起不必要的错误必要的错误必要的错误必要的错误 #define PI #define PI 3.14;3.14; a = PI * 2 * 2;a = PI * 2 * 2; 预编译预编译预编译预编译处理后处理后处理后处理后a = a = 3.14;3.14; * 2

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 幼儿/小学教育 > 小学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号