襄樊职业技术学院:《C语言程序设计》第八讲 编译预处理

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)习惯上宏名用大写字母表示,以便于与变量区 别。但也允许用小写字母,不要理解为宏名只 能用大写字母表示
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 襄樊职业技术学院:《C语言程序设计》第六讲 循环结构.ppt
- 襄樊职业技术学院:《C语言程序设计》第四讲 顺序结构.ppt
- 襄樊职业技术学院:《C语言程序设计》第三讲 运算符与表达式.ppt
- 襄樊职业技术学院:《C语言程序设计》第二讲 数据类型.ppt
- 襄樊职业技术学院:《C语言程序设计》第一讲 基本知识.ppt
- 计算机网络——可靠的数据流传输服务(TCP:传输控制协议).ppt
- 计算机网络——网络层(因特网基础).ppt
- 计算机网络——网络高层.ppt
- 计算机网络——数据通信基础知识.ppt
- 东南大学:《计算机组成原理》课程教学资源(PPT课件讲稿)第九章 输入输出组织、复习.ppt
- 东南大学:《计算机组成原理》课程教学资源(PPT课件讲稿)第七章 总线及总线互连结构、第八章 输入输出设备.ppt
- 东南大学:《计算机组成原理》课程教学资源(PPT课件讲稿)第四章 存储系统、第五章 指令系统、第六章 中央处理机组织.ppt
- 东南大学:《计算机组成原理》课程教学资源(PPT课件讲稿)第一章 概述、第二章 数据的表示、第三章 运算器与运算方法.ppt
- 《java认证》第11章 Java 基础类.doc
- 《java认证》第10章 AWT 组件库.doc
- 《java认证》第9章 AWT 事件模型.doc
- 《java认证》第八章 建立 GUIs.doc
- 《java认证》第七章 异常.doc
- 《java认证》第六章 高级语言特征.doc
- 《java认证》第五章 对象和类.doc
- 襄樊职业技术学院:《C语言程序设计》第七讲 数组.ppt
- 襄樊职业技术学院:《C语言程序设计》第五讲 选择结构.ppt
- 襄樊职业技术学院:《C语言程序设计》第十一讲 结构体与共用体.ppt
- 襄樊职业技术学院:《C语言程序设计》第十讲 指针.ppt
- 襄樊职业技术学院:《C语言程序设计》第九讲 函数.ppt
- 渤海大学:《计算机导论》课程教学资源(PPT课件)第一章 计算机基础知识.ppt
- 渤海大学:《计算机导论》课程教学资源(PPT课件)第六章 PowerPoint.ppt
- 渤海大学:《计算机导论》课程教学资源(PPT课件)第三章 计算机安全.ppt
- 渤海大学:《计算机导论》课程教学资源(PPT课件)第七章 程序设计基础.ppt
- 渤海大学:《计算机导论》课程教学资源(PPT课件)第五章 Excel电子表格软件.ppt
- 渤海大学:《计算机导论》课程教学资源(PPT课件)第二章 WINDOWS2000操作系统.ppt
- 渤海大学:《计算机导论》课程教学资源(PPT课件)第四章 Word字处理软件.ppt
- 渤海大学:《计算机导论》课程教学资源(PPT课件)第八章 计算机网络基础.ppt
- 《计算机实用技术》讲义PDF电子书.pdf
- 西北工业大学:《Internet实用技术》第1章 认识Internet与Web.ppt
- 西北工业大学:《Internet实用技术》第2章 如何接入internet.ppt
- 西北工业大学:《Internet实用技术》第3章 上网浏览.ppt
- 西北工业大学:《Internet实用技术》第4章 收发电子邮件.ppt
- 西北工业大学:《Internet实用技术》第5章 文件传输与下载.ppt
- 西北工业大学:《Internet实用技术》第6章 网络寻呼与网上新闻组.ppt