- 1、本文档共17页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
C语言程序设计;编译预处理;9.1宏定义 ;2.使用宏定义的优点
(1)可提高源程序的可维护性。
(2)可提高源程序的可移植性。
(3)减少源程序中重复书写字符串的工作量。
例9-1宏定义应用。
#includestdio.h
#definePR10
voidmain()
{inti=6;
printf(“i+PR=%d\n”,i+PR);
#undefPR
#definePR50
printf(“i+PR=%d\n”,i+PR);
};(1)宏名一般用大写字母表示,用来与变量区别。
(2)宏定义不是C语句,所以不能在行尾加分号。否则,宏展开时,会将分号作为字符串的一个字符,用于替换宏名。
(3)在宏展开时,预处理程序仅以按宏定义简单替换宏名,而不作任何检查。如果有错误,只能由编译程序在编译宏展开后的源程序时发现。
(4)宏定义命令#define出现在函数的外部,宏名的有效范围是:从定义命令之后,到本文件结束。通常,宏定义命令放在文件开头处。
(5)在进行宏定义时,可以引用已定义的宏名。
(6)对双引号括起来的字符串内的字符,即使与宏名同名,也不进行宏展开。应用宏可编写通用性强的程序;可减少书写错误。
;(7)宏名常用在以下两方面:
用一个有意义的名字去代替含义不清的一串数字,比如用PI代表圆周率,用PAGE_SIZE代表每页打印的行数等,如:
#definePI3.14159265358979
#definePAGE_SIZE66
这样在程序中使用PI和PAGE_SIZE比用3.14159265358979和66的含义明确多了,既简单又清楚,既便于修改又可避免出错。
用一个短的名字去代替较长的名字如:
#defineSTUstructstudent
STUstud1,stud2;
即等价于
structstudentstud1,stud2;
(8)程序设计中常见的错误是宏定义时在宏值的后面加分号如:
#definePI3.14159;
则对s=2*PI*r;会替换成s=2*3.14159;*r;这会产生编译错误。
;1.带参数宏的一般格式:#define宏名(参数表)替换串
2.带参数宏的调用和宏展开
调用格式:宏名(实参表);
宏展开:用宏调用提供的实参字符串,直接置换宏定义命令行中、相应形参字符串,非形参字符保持不变。
3.说明:
(1)定义有参宏时,宏名与左圆括号之间不能留有空格。??则,C编译系统将空格以后的所有字符均作为替代字符串,而将该宏视为无参宏。
(2)有参宏的展开,只是将实参作为字符串,简单地置换形参字符串,而不做任何语法检查。在定义有参宏时,在所有形参外和整个字符串外,均加一对圆括号。宏值中间的参数要用圆括号括起来。
;例9-3带参数宏的应用。;9.2文件包含命令;9.2文件包含命令;9.2文件包含命令;9.2文件包含命令;9.3条件编译;9.3条件编译;格式2:
#ifndef标识符
程序段1
#else
程序段2
#endif
或
#ifndef标识符
程序段1
#endif
标识符未经#define定义,执行程序段1;否则,执行程序段2。;(1)提高了C源程序的通用性。
(2)使调试程序等过程变得灵活。
(3)使用条件编译可以减少目标程序的长度
例输入一行字母字符,根据需要设置条件编译,使之能将字母全改为大写字母输出,或全改为小写字母输出。;C标准规定可以在C源程序中加入一些“预处理命令”,以改进程序环境,提高编程效率。对于预处理命令,必须在程序编译之前,先对这些特殊命令进行“预处理”。
C语言提供的预处理功能主要有以下三种:宏定义、文件包含、条件编译,分别用宏定义命令,文件包含命令,条件编译命令来实现。
为了与一般C语句相区别,这些命令以符号“#”开头。
您可能关注的文档
- 3D打印造型设计课件:产品色彩设计.pptx
- 3D打印造型设计课件:产品造型美学原则应用.pptx
- 3D打印造型设计课件:齿轮泵的装配与仿真.pptx
- 3D打印造型设计课件:传动机构设计.pptx
- 3D打印造型设计课件:机械臂的装配与仿真.pptx
- 3D打印造型设计课件:外观造型设计.pptx
- 3D打印造型设计课件:无人机的装配与仿真.pptx
- 3D打印造型设计课件:造型设计表现技法应用.pptx
- 32位汇编语言程序设计(第3版)课件:Windows编程.pptx
- 32位汇编语言程序设计(第3版)课件:浮点、多媒体及64位指令.pptx
- 区域经济学(第二版)课件:区域经济学与新区域经济观.ppt
- 3D打印造型设计课件:产品色彩设计.pptx
- 3D打印造型设计课件:无人机的装配与仿真.pptx
- 2025届江西省临川高三下学期第五次调研考试历史试题含解析.doc
- 粮食钢板筒仓设计规范GB50322-2011知识培训.pptx
- 电气装置安装工程GB50148-2010知识培训.pptx
- 2025届烟台市重点中学高考仿真模拟生物试卷含解析.doc
- 山东省潍坊市青州市2025届高三下学期联合考试生物试题含解析.doc
- 2025届四川省阆中东风中学高考历史押题试卷含解析.doc
- 天津市滨海七所重点学校2025届高考考前模拟生物试题含解析.doc
文档评论(0)