新编C语言程序设计教程(本科)第12章精选.pdf

新编C语言程序设计教程(本科)第12章精选.pdf

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
新编C语言程序设计教程(本科)第12章精选

第 12 章 编 译 预 处 理 第12章编译预处理 12.1 宏定义 12.2 文件包含  12.3 条件编译 第 12 章 编 译 预 处 理 12.1 宏定义 12.1.1 不带参数的宏定义 定义形式:  #define 宏名 宏体  宏名是一自定义标识符,宏体是一字符串,在程序 中可用宏名代表宏体。  第 12 章 编 译 预 处 理 例如,用PI代表3.1415926,用PR代表printf ,宏 定义如下:  (1) #define PI 3.1415926  (2) #definee PR printf  程序中凡是出现3.1415926的地方,都可以以PI 出 现,凡是出现printf 的地方,都可以以PR 出现。 第 12 章 编 译 预 处 理 例12-1 利用宏定义求圆的周长和面积。 /* 程序12 - 1,利用宏定义求圆的周长和面积 */  #define PI 3.1415926  #define R 1.0  main ()  {float l,s;  l=2.0*PI*R ;  s=PI*R*R;  printf (″周长=%f ,面积=%f\n ″,l,s );  } 第 12 章 编 译 预 处 理 上面程序在编译前将进行宏展开,宏展开以后 变为: main ()  {float l,s;  l=2.0*3.1415926*1.0 ;  s=3.1415926*1.0*1.0;  printf (″周长=%f ,面积=%f\n ″,l,s ); } 第 12 章 编 译 预 处 理 (1) 宏名一般习惯用大写字母表示,以便与变量名相区 别。当然可以使用小写字母。  (2) 宏定义是用宏名简单替换宏体,也就是作简单的置 换,不作语法检查, 出现错误也不会报告,只有在宏展开 后编译时才会报告错误。  (3) 程序中双引号中与宏名相同的内容不被替换。  (4) 宏展开后源程序将变长。  (5) 使用宏名,可以减少程序中重复书写某些宏体的工 作量。  (6) 宏定义一般放在程序的开头,宏名的有效范围为定 义位置到文件结束。  (7) 宏定义可以嵌套,后定义的宏可使用已定义的宏。 第 12 章 编 译 预 处 理 12.1.2 带参数的宏定义 定义形式:  #define 宏名(参数表)宏体  带参数的宏展开时要从左至右进行参数的简单替 换,使用起来较无参数宏定义复杂。  例如:  (1) #define S (n )(n )* (n )* (n )  (2) #define T (n )1/ (n )  第一个式子代表n 的立方,第二个式子代表n 的倒数。 第 12 章 编 译 预 处 理 说明:  (1) 列出的参数必须在宏体中用到。  (2) 带参数的宏展开只是将实参简单替换形参。当实参 中含有运算,宏展开可能会出问题。  如有宏定义:  #define S (n ) n*n*n  若将形参n 用实参a+b 替换,S (a+b )会变成 a+b*a+b*a+b,显然与原意不相符。  如将宏定义改成:  #define S (n )(n )* (n )* (n )   S (a+

文档评论(0)

tazhiq2 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档