- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第 8章 编译预处理 10.1 宏定义 在C语言中,“宏”分为无参数的宏(简称无参宏)和有参数的宏(简称有参宏)两种。 【例10-1】输入圆的半径,求圆的周长、面积和球的体积。要求使用无参宏定义圆周率。 /*exam10_1,输入半径,求圆的周长、面积和球的体积。*/ #include stdio.h #define PI 3.1415926 main(void) { double radius,length,area,volume; printf(Input a radius: ); scanf(%lf,radius); length=2*PI*radius; /*引用无参宏求周长*/ area=PI*radius*radius; /*引用无参宏求面积*/ volume=PI*radius*radius*radius*3/4;/*引用无参宏求体积*/ printf(length=%.2f,area=%.2f,volume=%.2f\n,length, area, volume); } 1.带参宏定义的一般格式 #define 宏名(形参表) 语言符号字符串 2.带参宏的调用和宏展开 (1)调用格式:宏名(实参表) (2)宏展开:用宏调用提供的实参字符串,直接置换宏定义命令行中、相应形参字符串,非形参字符保持不变。例如: #define MIN(a,b) (ab)?a:b main(void) { int x, y; x=10;y=20; printf(the minimum is: %d ,MIN(x,y)); } 10.2 文件包含 1.文件包含的概念 文件包含是指,一个源文件可以将另一个源文件的全部内容包含进来。 2.文件包含处理命令的格式 #include “包含文件名” 或 #include 包含文件名 两种格式的区别仅在于: (1)使用双引号:系统首先到当前目录下查找被包含文件,如果没找到,再到系统指定的“包含文件目录”(由用户在配置环境时设置)去查找。 (2)使用尖括号:直接到系统指定的“包含文件目录”去查找。一般地说,使用双引号比较保险。 10.3 条件编译 功能:当“标识符”已经被#define命令定义过,则编译程序段1,否则编译程序段2。 (1)在不同的系统中,一个int 型数据占用的内存字节数可能是不同的。这样往往需要对源程序作出修改,这就降低了程序的通用性。使用以下条件编译处理,则可以轻松解决此类问题。如: 本章学习目标 熟练掌握宏定义。 掌握文件包含处理。 了解条件编译。 [Return] 所谓编译预处理是指,在对源程序进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。 10.1 宏定义 10.2 文件包含 10.3 条件编译 10.1.1 无参宏定义 1. 无参宏定义的一般格式 #define 标识符 语言符号字符串 其中:“define”为宏定义命令;“标识符”为所定义的宏名,通常用大写字母表示,以便于与变量区别;“语言符号字符串”可以是常数、表达式、格式串等。 2. 使用宏定义的优点 (1)可提高源程序的可维护性 (2)可提高源程序的可移植性 (3)减少源程序中重复书写字符串的工作量 3.说明 (1)宏名一般用大写字母表示,以示与变量区别。但这并非是规定。 (2)宏定义不是C语句,所以不能在行尾加分号。否则,宏展开时,会将分号作为字符串的1个字符,用于替换宏名。 (3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。如果有错误,只能由编译程序在编译宏展开后的源程序时发现。 (4)宏定义命令#define出现在函数的外部,宏名的有效范围是:从定义命令之后, 到本文件结束。通常,宏定义命令放在文件开头处。 (5)在进行宏定义时,可以引用已定义的宏名。 例如: #define ONE 1 #define TWO ONE+ONE #define THREE ONE+TWO (6)对双引号括起来的字符串内的字符,即使与宏名同名,也不进行宏展开。 例如: #define XYZ this is a test … … printf(XYZ); 该语句不是打印输出: this is a test 而是打印输出: XYZ [演示] 10.1.2 有参宏定义 当编译该程序时,由MIN(a,b)定义的表达式被替换, x和y用作操作数,即printf( )语句被代换后取如下形式: printf(the minimum is:
您可能关注的文档
- C语言程序设计(第三版) 林小茶 C_ch8新.ppt
- C语言程序设计(第三版) 林小茶 C_ch9新.ppt
- C语言程序设计(第三版) 罗坚 王声决 主编 第1章 C程序设计入门新.ppt
- C语言程序设计(第三版) 罗坚 王声决 主编 第2章 数据类型、运算符和表达式新.ppt
- C语言程序设计(第三版) 罗坚 王声决 主编 第3章 算法与程序设计基础新.ppt
- C语言程序设计(第三版) 罗坚 王声决 主编 第4章 函数新.ppt
- C语言程序设计(第三版) 罗坚 王声决 主编 第5章 数组类型与指针类型新.ppt
- C语言程序设计(第三版) 罗坚 王声决 主编 第6章 结构类型与联合类型新.ppt
- C语言程序设计(第三版) 罗坚 王声决 主编 第7章 文件新.ppt
- C语言程序设计(第三版) 恰汗.合孜尔 第1章 概论新.ppt
- C语言程序设计朱建芳 第12章新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 Delphi程序设计 目录新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 第九章 文件管理新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 第七章 窗体与控件新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 第十四章 安装包制作新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 第十一章 多媒体程序设计新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 第十章 图形图像程序设计新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 第四章 高级数据类型新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 第五章 过程与函数新.ppt
- Delphi 程序设计 冯博琴主编 席一凡 聂 第一章 Delphi概述新.ppt
文档评论(0)