- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
主讲老师:刘志强 第九章 编译预处理 主要内容: §9.1 宏定义 §9.2 文件包含 第九章 编译预处理 所谓预处理就是C语言的编译系统在对程序进行通常的编译之前,先对这些特殊的命令进行预处理,然后将预处理的结果和源程序一起再进行通常的编译处理,以得到目标代码。 C 语言的预处理主要有以下三种: 1. 宏定义 #define 2. 文件包含 #include 3. 条件编译 #if--#else--#endif等 C的编译预处理命令格式: 以“#”开头 占单独书写行 语句尾不加分号 §9.1 宏定义 宏定义以#define开头,当程序中多次使用某一常量或某一字符串时,可以使用宏定义以使程序书写简单。 如有: #define M 10在程序中可以用10取代所有的M。 使用宏定义有两个注意事项:一是宏定义与函数不同;二是对于带参的宏,务必要进行宏替换后再分析程序的运行结果。 一、不带参的宏定义 格式: #define 宏名 宏体 宏展开:在预编译时将宏名替换成宏体(字符串),这个过程称为宏展开(宏替换)。 说明:(1)宏名一般用大写字母表示以便与变量分开, 但不是规定而只是习惯。 (2)宏定义不是C语句,末尾不加分号。 (3)程序中双引号中的宏名不进行宏替换。 无参的宏定义使用举例 #define M 10 main( ) {int j,a[M]; for(j=0;jM;j++) a[j]=j+1; for(j=0;jM;j++) printf(%6d,a[j]); } 二、带参数的宏定义 格式: #define 标识符(参数表) 字符串 说明: (1) 参数表中的参数必须为变量,称为形参。 (2) 带参的宏定义展开是从左到右依次将实参 字符串代替形参字符串。 (3) 在宏定义时,宏名与带参的括号之间不应 留空格,括号后面一定要留空格。 带参的宏定义使用举例 #define S(x,y) x*y main( ) { int a=3,b=4,c=5,d=6; printf(a*b=%d\n, S(a,b)); printf(a+b*c+d=%d\n , S(a+b,c+d)); } 带参的宏定义使用举例 #define S(x,y) x*y main() { int a=3,b=4,c=5,d=6; printf(a*b=%d\n, S ( a , b ) ) ; printf(a+b*c+d=%d\n , S((a+b),(c+d))); } 带参的宏定义使用举例 #define S(x,y) x*y main( ) { int a=3,b=4,c=5,d=6;int k; k=S(a+b,c+d)/S(a+b,c+d); printf(%d\n ,k); } §9.2 文件包含 所谓文件包含是指一个源文件可以将另外一个源文件的全部内容包含进来,使另外的文件成为本文件的一部分。 Turbo C提供了#include命令来实现文件包含操作。 Turbo C提供了大量的库函数,在用户使用这些库函数之前,应当使用文件包含命令将相应的头文件包含到当前源程序中。 一、文件包含的意义 使用文件包含可以避免程序设计中的重复劳动。 二、文件包含的格式及用法 格式: #include “文件名” #include 文件名 三、文件包含的一些说明 三、文件包含的一些说明 三、文件包含的一些说明 主讲老师:刘志强 * ? ? * 无参宏定义中的宏名M,系统是作为符号常量来处理的,因此可以用来定义数组。 a*b); a+b*c+d ) ) ; 带参的宏定义在分析程序之前先进行宏展开,S(a+b,c+d)展开时用a+b代替x,用c+d代替y,展开的结果为:a+b*c+d a*b (a+b)*(c+d) ) ; 带参的宏定义在分析程序之前先进行宏展开,S((a+b),(c+d))展开时用(a+b)代替x,用(c+d)代替y,展开的结果为:(a+b)*(c+d) S(a+b,c+d)展开结果为:a+b*c+d/a+b*c+d=3+4*5+6/3+4*5+6=3 + 20 + 2 + 20 +6 = 51 在当前目录和指定目录下搜索被包含的文件。一般用于包含用户自己编写的文件。 只在指定目录下搜索被包含的文件。 一般用于调用库函数。 系统到存放c库函数头文件的目录中寻找要包含的文件,称为标准方式 系统先到用户当前目录中寻找要包含的文件,若找不到,再按标
您可能关注的文档
最近下载
- 智能制造精益生产与智能制造的融合.pptx VIP
- 汽车热管理管路深度报告:新能源管路空间大幅提升,塑料应用高速增长.docx VIP
- 01.2021U9Cloud多组织入门培训-基础设置.pptx VIP
- 学校校长公开选拔笔试试题及参考答案校长招聘考试笔试真题及答案.docx VIP
- 2025年央国企AI+数智化转型研究报告.pdf VIP
- 2025年疾控中心招聘试题及答案.docx VIP
- 道家打坐的正确方法.doc VIP
- 2024-2025学年初中音乐七年级上册(2024)人音版(2024)教学设计合集.docx
- 智能毕业设计:基于单片机的电子时钟设计.docx VIP
- 2024年贵州社区工作者招聘真题 .pdf VIP
文档评论(0)