- 1、本文档共36页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
;一、什么是编译预处理
编译预处理是指,在进行编译之前,先对源程序中的编译预处理命令进行处理;然后再将处理的结果,和源程序一起进行编译,以得到目标代码。;一、不带参数宏定义
一般形式: # define 宏名 [字符串]
字符串表示宏名,可缺省,定义过或取消宏体。
功能:用指定标识符(宏名)代替字符序列(宏体)
如:# define YES 1
# define NO 0
# define PI 3.1415926
# define OUT printf(Hello,World);
定义位置:任意 (一般在函数外面);作用域:从定义命令到文件结束;
可终止作用域,格式: # undef 宏名
例:# define YES 1
main()
{ ……
}
# undef YES
……
# define YES 0
max()
{ ……
} ;宏展开
预编译时,用宏体替换宏名
如:# define YES 1
# define NO 0
……
if (x==YES)
printf(correct!);
else if ( x==NO)
printf(error!);
引号中的内容不置换
如:# define P 3.1
printf(2*P=%f,2*P);;注意
宏定义不能递归
如:# define MAX MAX+10 (?)
宏定义可嵌套
如:# define WIDTH 80
define LENGTH WIDTH+40
var=LENGTH*2;
宏定义中使用必要的括号“( )”
如:上例宏展开:(若是求长方形周长就错了)
var = 80 + 40 * 2;;例 1* 给出下面宏替换的结果
# define R 5.0
# define FORMAT Area=%f\n
# define PI 3.14
# define AREA R*R*PI
# define PR printf
main()
{ PR(FORMAT, AREA);
PR(FORMAT);
}
; 二、 带参数宏定义 转下一部分
一般形式: # define 宏名(参数表) 宏体
宏展开:形参用实参换,其它字符保留
例:# define S( a, b ) a * b
……
area = S( 3, 2 );
宏展开: area = 3 * 2;
宏名与左圆括号之间不能留有空格
例:# define S?(r) PI*r*r
相当于定义了不带参宏 S,
代表字符串 (r) PI*r*r;宏体及各形参外一般应加括号 ( )
例:
# define POWER(x) x*x
x = 4; y = 6;
z = POWER( x + y );
宏展开:z = x + y*x+y; // 不是所要的结果
一般写成:
# define POWER(x) ((x)*(x))
宏展开:z=((x+y)*(x+y));;例 2* 用带参数宏定义求两个数的最大值
# define MAX(x, y) (x)(y)?(x):(y)
# include stdio.h
main()
{ int a, b, c;
float x, y, z;
scanf(%d%d, a,b);
c = MAX(a,b);
scanf(%f%f, x,y);
z = MAX(x, y);
printf(c=%d z=%f \n, c, z);
};带参的宏与函数区别
;三、在定义和使用宏调用时应注意的问题
1. 参数多次计算
如定义:# define min(A, B) ((A)(B)?(A):(B))
调用1: z = min(x+y,x*y);
展开: z= ((x+y)(x*y)?(x+y):(x*y));
调用2: z = min( n++ ,m++);
展开:z= ((n++ )(m++)?(n++ ):(m
您可能关注的文档
- 《思想道德与法治》课件-第5章 职业家庭.pptx
- 《思想道德与法治》课件-第8章 法律基础知识-劳动法.pptx
- 《思想道德与法治》课件-绪论.pptx
- 《中国近现代史纲要》课件-第6章 中华民族的抗日战争.pptx
- 特斯拉FSD入华,国内智驾拐点加速临近.pptx
- 2024年中国零售地产与消费市场年度研究报告-仲量联行.pptx
- 厦大团队:大模型概念、技术与应用实践(140页PPT读懂大模型).pptx
- 【飞瓜数据】2024年度抖音品类洞察报告.docx
- 龙韩林《商业创新》.pdf
- 第03讲 运动学图像追击相遇问题(课件)-【上好课】2025年高考物理一轮复习讲练测(新教材新高考).pptx
文档评论(0)