C语言程序设计 易晓梅 赵芸 第7章 预处理新.pptVIP

C语言程序设计 易晓梅 赵芸 第7章 预处理新.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第7章 编译预处理 C语言程序设计 本章要点 宏定义概述 文件包含的定义与操作 条件编译的定义与操作 本章学习目标 掌握带参数宏定义使用 掌握不带参数宏定义使用 了解文件包含 了解条件编译 第7章 编译预处理 在C语言程序中,还可以使用编译预处理命令。其作用不是实现程序的功能,而是向编译系统发布信息或命令,指示编译系统在对源程序进行编译之前应做些什么。 特点:特殊的命令。 C 编译系统先对程序中的特殊的命令进行“预处理”。 所有编译预处理语句都以“ # ”开头,每个预处理语句必须单独占一行,语句末尾不使用分号作为结束符。一般将编译预处理语句放在源程序的首部。预处理语句主要有: 宏 文件包含 条件编译 编译预处理——宏定义(续) 无参宏 定义: #define 标识符 字符串 (定义符号常量) 宏名 说明: 宏名一般习惯上用大写字母表示。 宏定义是用宏名代替一个字符串,只作简单的置换,不作语法检查。 #define 命令出现在程序中所有函数的外面,宏名的有效范围为定义命令之后到源文件结束,但可#undef命令终止宏定义的作用域。 例9.1 例 #define PI 3.1415926 main() { float l,s,r,v; printf(input radius :\n); scanf(%f,r); l=2.0*PI*r; s=PI*r*r; v=4.0/3*PI*r*r*r; printf(l=%10.4f\ns=%10.4f\n v=%10.4f\n,l,s,v); } 说明: 宏名一般用大写。 行尾不加“;” 有效范围: 定义之后到文件结束。 “”之内的宏名无效。 编译时 标识符替换成 字符串,——宏替换 有参宏 定义 #define 宏名(参数表) 字符串 例1:#define POWER(X) X*X 在程序中使用时: z=POWER(x+y); 编译时替换为:z=x+y*x+y;(运算顺序不对) 例2::#define POWER(X) (X)*(X) 在程序中使用时: z=POWER(x+y); 编译时替换为: z= (x+y)*(x+y); 编译预处理——宏定义(续) 在宏名与参数的括弧之间不应加空格 说明 P188-190 参数表是形式参数,宏替换时由实际参数代替。 例9.3 例 8.3 #define PI 3.1415 #define S(r) PI*r*r main( ) { … a=3.6; area=s(a); … } 宏展开后 area=3.1415*a*a; 注意:宏替换——简单替换 若 r 参数为表达式 s(a+b) area=PI*a+b*a+b 重新定义 S(r) 例 #define PI 3.1415 #define S(r) PI*(r)*(r) main( ) { … a=3.6; area=s(a); … } 带参宏与函数的区别 函数调用时先求实参的值,其值带入形参。 带参宏只进行简单替换,不求值。 函数调用是在程序运行时处理。 宏展开是在编译时进行,不分配内存单元,不进行“值”传递,无返回值。 函数中实参和形参个数相等、类型一致、顺序对应 宏不存在类型,只是一个符号代表。 带参宏与函数的区别 例 定义 #define PI 3.14159 #define CIRCLE(R,L,S,V) L=2*PI*R; S=PI*R*R; V=4.0/3.0*PI*R; 程序中 CIRCLE(r,l,s,v); 若r=3.5 l=2*3.14159*3.5 s = 3.14159*3.5*3.5 v=4.0/3.0*3.14159*3.5 #include 包含文件名 编译系统直接到指定的标准包含文件目录(通常是 c:\tc30\include)搜索包含文件。 #include “包含文件路径名 编译系统按指定路径搜索。 未指定路径名时,首先在当前目录中搜索, 找不到时,

文档评论(0)

开心农场 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档