C语言——条件编译的.pptVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C语言——条件编译的

第九章;回顾;指针的算术运算的含义是指针的移动,将指针执行加上或者减去一个整数值n的运算相当于指针向前或向后移动n个数据单元 指针可以执行比较相等的运算,用来判断两个指针是否指向同一个变量 指向数组的指针,存储的是数组中元素的地址。;目标; 预处理命令是由ANSI C统一规定的,但是它不是C语言本身的组成部分,不能直接对它们进行编译。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行“预处理”, 即根据预处理命令对程序作相应的处理。 经过预处理后程序不再包括预处理命令了,最后再由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。 现在使用的许多C编译系统都包括了预处理、编译和连接等部分,在进行编译时一气呵成。因此不少用户误认为预处理命令是C语言的一部分,甚至以为它们是C语句,这是不对的。 C提供的预处理功能主要有以下三种:    1. 宏定义    2. 文件包含    3. 条件编译 为了与一般C语句相区别,这些命令以符号“#”开头。;9.1 宏定义;例 9.1;9.1 宏定义;9.1 宏定义;9.2带参数的宏定义 ;例 9.2 ; 对于带参数的宏定义有以下问题需要说明: (1)带参宏定义中,宏名和形参表之间不能有空格出现。 例如: #define S2(a,b) (a)*(b) 写为: #define S2 (a,b) (a)*(b) 将被认为是无参宏定义,宏名S2代表字符串 (a,b) (a)*(b)。宏展开时,宏调用语句成为: s20=(a,b) (a)*(b)(a,b); 这显然是错误的。 (2)在带参宏定义中,形式参数不分配内存单元,因此不必作类型定义。这与函数调用中的情况是不同的。在函数调用中,形参和实参是两个不同的量,各有自己的作用域,调用时要把实参值传递给形参,进行“值传递”。而在带参宏中,只是符号代换,不存在值传递的问题。 (3) 在宏定义中的形参是标识符,而宏调用中的实参可以是表达式。;宏定义还可以解除,解除宏定义的一般形式为: #undef 宏名 其中,#undef是关键字,宏名是在此前定义过的。功能是解除前面已定义的宏,使之不再起作用,也就是说宏有它的作用域。;9.2文件包含 ;例 9.3 ;#include stdio.h #include “area.h” void main() { double r,a,b,x,y,s10,s20,s30; printf(“请输入圆的半径r:”); scanf(“%lf”,r); printf(“请输入矩形的长和宽a,b:”); scanf(“%lf%lf”,a,b); printf(“请输入三角形的底和高x,y:”); scanf(“%lf%lf”,x,y); s10=S1(r); s20=S2(a,b); s30=S3(x,y); printf(“圆的面积=%lf\n”,s10); printf(“矩形的面积=%lf\n”,s20); printf(“三角形的面积=%lf\n”,s30); };【注意点】 #include “area.h”写成:#include area.h时,第一次编译可能产生如下错误: fatal error C1083: Cannot open include file: ‘area.h’: No such file or directory;9.3条件编译 ;例 9.4 ;#ifdef S2 //因S2(a,b)没有定义,所以不能输出矩形的面积 { double a,b,s20; printf(“请输入矩形的长和宽a,b:”); scanf(“%lf%lf”,a,b); s20=S2(a,b); printf(“矩形的面积=%lf\n”,s20); } #endif #ifdef S3 //因S3(a,b)没有定义,所以不能输出三角形的面积 { double x,y,s30; printf(“请输入三角形的底和高x,y:”); scanf(“%lf%lf”,x,y); s30=S3(x,y); printf(“三角形的面积=%lf\n”,s30); } #endif };【注意点】 (1)不带参数与带参数的宏定义在条件编译格式1中的使用格式都一样: #ifdef 宏名 带参数的宏中的参数不能含有,请读者上机操作。 (2)程序中#ifdef …… #else …… #endif可以用嵌套方式。本例

文档评论(0)

ayangjiayu3 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档