九章预处理命令.pptVIP

  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文档。上传文档
查看更多
第九章 预处理命令 9.1 宏定义 9.2 文件包含 9.3 条件编译 9.1 宏定义 9.1.1 不带参的宏定义 1. 形式:#define 标识符 字符串 例 #define PRICE 30 #define NUMBER 10 #define TOTAL PRICE*NUMBER main( ) {printf(“TOTAL=%d\n”, TOTAL);} 预编译后,程序为: main( ) {printf(“TOTAL=%d\n”, 30*10);} 2. 说明: (1)不带参的宏常用来定义符号常量。 (2)同一宏名可被重复定义,以最后的定义为准。 (3)宏定义时,可引用已定义的宏名,层层置换。 (4)宏展开时,只做简单的宏替换,不做任何语法检查或运算。 (5)双引号内的宏名不被置换。 (6)宏名的有效范围是从定义开始到文件结束,可用命令“#undef 标识符”来终止作用域。 (7)一个命令只定义一个宏。 9.1.2 带参的宏定义 1. 形式:#define 宏名(参数表) 包含参数的字符串 例 若有宏定义:#define s(a,b) a*b 且使用该宏:area=s(3,2); 则预编译后,宏展开为:area=3*2; 2. 宏如何展开 #define s(a,b) a*b area=s(3,2); 例 #define PI 3.14 #define s(r) PI*r*r main( ) {float a=3.6, area; area=s(a); /*area=3.14*3.6*3.6;*/ printf(“area=%f\n”, area); } 若main函数改为: main( ) {float a=3.6, b=6.4, area; area=s(a+b); /*area=3.14*3.6+6.4*3.6+6.4;*/ printf(“area=%f\n”, area); } 3. 说明: (1)带参宏展开时,只是用实参简单地替换形参,并不会计算出实参值。 (2)宏定义时,包含参数的字符串中的参数外面最好加一括弧。如: #define s(r) PI*(r)*(r) (3)带参宏定义时,宏名与括号之间不能加空格。 若有定义: #define s (r) PI*r*r 则变为无参宏,展开为:area=(r) PI*r*r(a); 4. 函数与带参宏的区别: (1)函数调用时,要先自右而左计算出实参值;而带参宏展开时,只做简单的字符替换,不计算实参值。 (2)函数的调用是在运行时进行的,且为形参分配存储空间;而宏展开是在预编译时进行的,并不为形参分配存储空间。 (3)对于函数,要给出参数的类型;而宏则不存在类型问题。 例 #define N 2+1 #define M (N+1)*N/2 main( ) {int j; for(j=1; jM; j++) printf(“%2d”, j); } 9.2 文件包含 1. 形式: ① #include 文件名 ② #include“文件名” 第一种形式用于库函数,第二种多用于用户自定义函数。 功能:预编译时,将被包含文件的内容全部复制到包含文件中。 说明: 若被包含文件修改了,则包含此文件的所有文件要重新编译。 文件包含可嵌套P196。 一个命令只包含一个文件,且要注意包含顺序。 若文件1包含文件2,而文件2中要使用文件3的内容,则在文件1中应使用命令: #include “file3.h” #include “file2.h” 9.3 条件编译 源程序中的一部分内容只在满足一定条件时才进行编译。 三种形式及功能 #ifdef 标识符 程序段1 #else 程序段2 #endif 若宏定义了标识符,则执行程序段1;否则,执行程序段2。 2. #ifndef 标识符

文档评论(0)

181****7523 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档