第十三章预处理和动态存储分配.pptVIP

  1. 1、本文档共23页,可阅读全部内容。
  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文档。上传文档
查看更多
第十三章预处理和动态存储分配

第13章 编译预处理和动态 存储分配 ;高级语言的源程序 ;;例:使用不带参数的宏定义。 #define N 10 void main() { int a[N],i; for(i=0;iN;i++)a[i]=i*i; for(i=0;iN;i++)printf(“%d “,a[i]); printf(“\n”); } 说明: 1)表示宏名的标识符习惯用大写字母表示,以便与变 量名区别,这并非规定。 2)宏定义的位置一般写在程序的开头。; ;例:不带参数的宏定义。 #define PR printf(“\n”) void main ( ) { int i ,j ,k; i=15; j=9; printf(“%d %d”, i+j, i-j); PR; /* 展开:printf(“\n”) */ printf(“%d %d”, i*j, i/j); PR; /* 展开:printf(“\n”) */ } ;(2) 带参数的宏定义形式 #define 宏名(形参表) 替换文本 其中:宏名 是用户定义的标识符。 形参表 指定的形参(由标识符命名),形参之 间用逗号分开。 替换文本 是字符串(通常包含指定的形参)。 作用:编译预处理程序对源程序中出现的带实参的宏 ,用实参对#define命令行中的替换文本(字符 串)中形参进行替换。 例如:#define F(x,y) x*x+y*y ┆ int d1; d1=F(3,2)+10; /* d1=3*3+2*2+10; */ 把实参3和2代替宏定义中形参x和y,即F(3,2)表示3*3+2*2 。;例:带参数的宏定义。 #define M(x,y) xy?x:y void main ( ) { int i ,j ,k; i=5; j=10; k=10*M(i, j); /* 展开:k=10*510?5:10; */ printf (“%d\n”,k)   } 说明: 1)调用带参数的宏时,实参与形参的个数应相同。 2)实参可以是常量、变量或表达式形式。 3)带参数宏替换与函数调用有类似之处,但前者对参 ; 数没有类型的要求。 4)宏替换中,实参不能替换双引号中的形参。 5)与不带参数的宏定义一样,同一个宏名不能重复定 义。 (3) 终止宏定义形式 #undef 已定义宏名 例如: #define PI 3.14159 main( ) ┆ #undef PI 从终止宏定义(#undef PI)后PI无定义,不代表3.14159了。;*使用宏定义的优势: 1) 宏替换不占程序运行时间,只占编译时间。 2) 便于阅读 3) 修改方便 注意: 宏定义最后没有“ ;” 。 ;2. 文件包含 就是在一个文件中,将已有的另外一个文件的全部内容包含进来。 由于C的库函数很多,将这些函数根据类型不同分类, 分别放在不同的文件中(例如, 数学函数:math.h 、输入/出: stdio.h 、 字符函数: ctype.h 、字符串:string.h 、动态分配:malloc.h 其它:tdlib.h 。),编程时,使用哪个文件中的函数, 将该文件用文件包含的形式,写在程序的前面 。 C语言提供了#include 命令行, 实现“文件包含”功 能,其一般形式为: #include “文件名” 或 #include 文件名 ;编译预程序将用指定的文件中的内容替换此命令行。 如果文件名用双引号括起来时,系统先在用户当前 目录查找要包含的文件,若找不到,再按标准方式(系 统指定的目录)查找;如果文件名用尖括号括起来时, 按标准方式查找。 说明: 1) #include 命令行的位置一般写在源程

文档评论(0)

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

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

1亿VIP精品文档

相关文档