当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《C语言教程》教学资源(PPT课件讲稿)第八讲 编译预处理

资源类别:文库,文档格式:PPT,文档页数:22,文件大小:109KB,团购合买
编译预处理内容介绍 1、预处理概述 2、宏定义 3、文件包含 4、条件编译
点击下载完整版文档(PPT)

C语言教程:编译预处理 学习目的:预处理命令的作用是改进 程序设计环境,提高编程效率。通 过宏定义、文件包含和条件编译的 讲解,使学生熟悉并能用这三种预 处理命令编写简单程序

C语言教程:编译预处理 学习目的:预处理命令的作用是改进 程序设计环境,提高编程效率。通 过宏定义、文件包含和条件编译的 讲解,使学生熟悉并能用这三种预 处理命令编写简单程序

编译预处理内容介绍 1预处理概述 2宏定义 3文件包含 4条件编译

编译预处理内容介绍 1 预处理概述 2 宏定义 3 文件包含 4 条件编译

预处理命令概述 紫预处理的概念:在对C源程序进行编译之前所 进行的处理 TC中按下Ct+F9所完成的任务:预处理→>编译 →>连接→>运行。 xC中提供的预处理功能:宏定义、文件包含、 条件编译。 紫C中的预处理命令:#开头、无分号结尾、一行 一个、名字可以作为一般标识符,如 int define=3

预处理命令概述 预处理的概念:在对C源程序进行编译之前所 进行的处理。 TC中按下Ctrl+F9所完成的任务:预处理->编译 ->连接->运行。 C中提供的预处理功能:宏定义、文件包含、 条件编译。 C中的预处理命令:#开头、无分号结尾、一行 一个、名字可以作为一般标识符,如: int define=3;

宏定义 兴“宏”的概念:用一个标识符来表示一个 字符串,该标识符称为“宏名” 業对“宏”的处理:在编译预处理时,对 程序中所有出现的“宏名”,都用宏定 义中的字符串去代换,这称为“宏代换” 或“宏展开” “宏”分为有参数和无参数两种 “宏定义”在程序的开头,函数的外部

宏定义 “宏”的概念:用一个标识符来表示一个 字符串,该标识符称为“宏名” 对“宏”的处理:在编译预处理时,对 程序中所有出现的“宏名”,都用宏定 义中的字符串去代换,这称为“宏代换” 或“宏展开” “宏”分为有参数和无参数两种 “宏定义”在程序的开头,函数的外部

无参宏定义的一般形式为:# define标识符字符串 4字符串”可以是常数、表达式、格式串等,如: #define pi3 1415926 井 define nl“n define d“00d3 符号常量的定义就是一种无参宏定义 对程序中反复使用的表达式可以进行宏定义 例如:# define m(y*y+3*y)

无参宏定义的一般形式为:#define 标识符 字符串 “字符串”可以是常数、表达式、格式串等,如: #define PI 3.1415926 #define NL “\n” #define D “%d” 符号常量的定义就是一种无参宏定义 对程序中反复使用的表达式可以进行宏定义 例如: #define M (y*y+3*y)

【例】# define m(y*y+3*y) main i int s,y printf("input a number: 2特别注意:在宏定义 scanf(%od", &y) 中表达式(y*y+3*y)两边的 S=3*M+4*M+5*M 括号不能少。否则会发生 错误。如当作以下定义后: printf("s%dn" S) #difine myy+3y 3在宏展开时将得到下 1s=3*M+4*M+5*M在预处述语句: 理时经宏展开后该语句变为 s3*y*y+3*y+4*y*y+3* s3*(yy+3y)+4*(y*y+3*y)y+5*y*y+3*y; +5*(y*y+3*y)

【例】 #define M (y*y+3*y) main( ) { int s,y; printf("input a number: "); scanf("%d",&y); s=3*M+4*M+5*M; printf("s=%d\n",s); } 2.特别注意:在宏定义 中表达式(y*y+3*y)两边的 括号不能少。否则会发生 错误。如当作以下定义后: #difine M y*y+3*y 3.在宏展开时将得到下 述语句: s=3*y*y+3*y+4*y*y+3* y+5*y*y+3*y; 1.s=3*M+4*M+5*M在预处 理时经宏展开后该语句变为: s=3*(y*y+3*y)+4*(y*y+3*y) +5*(y*y+3*y);

对于宏定义说明 1)在宏展开只是一种简单的代换,预处理程序对 它不作任何检查。如有错误,只能在编译已被 宏展开后的源程序时发现。 2)宏定义不是说明或语句,在行末不必加分号, 如加上分号则连分号也一起置换。 3)宏定义必须写在函数之外,其作用域为宏定义 命令起到源程序结束。如要终止其作用域可使 用# undef命令

对于宏定义说明 : 1)在宏展开只是一种简单的代换,预处理程序对 它不作任何检查。如有错误,只能在编译已被 宏展开后的源程序时发现。 2)宏定义不是说明或语句,在行末不必加分号, 如加上分号则连分号也一起置换。 3)宏定义必须写在函数之外,其作用域为宏定义 命令起到源程序结束。如要终止其作用域可使 用# undef命令

例如 #define pi3. 14159 maino #undef pl flo 表示PI只在main函数中有效,在中无效

例如: #define PI 3.14159 main() { …… } #undef PI f1() { …… } 表示PI只在main函数中有效,在f1中无效

4)宏名在源程序中若用引号括起来,则预处 理程序不对其作宏代换。 【例】 #define ok 100 main i printf("OK printf("n";

4) 宏名在源程序中若用引号括起来,则预处 理程序不对其作宏代换。 【例】 #define OK 100 main( ) { printf("OK"); printf("\n"); }

5)宏定义允许嵌套,在宏定义的字符串中可以使用已经定 义的宏名。在宏展开时由预处理程序层层代换。 例如: 井 define pi3.1415926 # define s pi*y*y/P是已定义的宏名* 对语句: printf(%f",S)在宏代换后变为: printf("%of",3.1415926*y*y); 6)习惯上宏名用大写字母表示,以便于与变量区 别。但也允许用小写字母,不要理解为宏名只 能用大写字母表示

5)宏定义允许嵌套,在宏定义的字符串中可以使用已经定 义的宏名。在宏展开时由预处理程序层层代换。 例如: #define PI 3.1415926 #define S PI*y*y /* PI是已定义的宏名*/ 对语句:printf("%f",S);在宏代换后变为: printf("%f",3.1415926*y*y); 6)习惯上宏名用大写字母表示,以便于与变量区 别。但也允许用小写字母,不要理解为宏名只 能用大写字母表示

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共22页,试读已结束,阅读完整版请下载
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有