网站大量收购闲置独家精品文档,联系QQ:2885784924

第11预处理与程序组织.pptVIP

  1. 1、本文档共24页,可阅读全部内容。
  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文档。上传文档
查看更多
第11预处理与程序组织

第十一章 预处理命令与程序组织 学习目标 课程内容 11.1概述 预处理 指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。 预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。 编译预处理包括: 宏定义 文件包含 条件编译 11.2 #define定义宏 宏定义的功能:在源程序中每次遇到宏名时,均以定义的串代换它。这个替换过程称为“宏代换”或“宏展开” 宏定义的形式: 宏取消: 源程序: #define PI 3.14 #define S PI*r*r #define V 4*S*r/3 main( ) {float r; printf(\nInput r:); scanf(%f,r); printf(S=%.2f V=%.2f\n,S,V); } 宏代换不是函数。与函数的区别: 简单置换,与调用函数不同,次数多时使程序变长,而函数调用不使程序变长。 宏展开在编译时进行,占用编译时间,不占运行时间,不进行值的传递处理,无返回值;函数占运行时间。 宏是简单置换,没有返回值;函数有返回值。 不定义形参类型,无类型。 宏特点:替换 需要注意替换时可能引起的优先级问题。最好的办法就是将宏的参数直接用括号括起来。 11.3 预定义宏 在C语言中预定义了一些有用的宏。这些宏主要是提供当前编译的信息。宏__LINE__和__STDC__是整型常量,宏__FILE_ ,__DATE__, __TIME__是字符串量。 11.4 #include包含 作用:包含文件 预处理器发现#include命令后,就会寻找后跟的文件名并把这个文件的内容包含到当前文件中。 为什么要包含文件呢? 包含的文件中有编译器所需的信息。 例如stdio.h文件通常包含EOF、NULL、getchar函数和putchar函数的定义。包含大型头文件并不一定显著增加程序的大小 。 很多情况下,头文件中的内容是编译器产生最终代码所需的信息,而不是加到最终代码里的具体语句。 11.4 #include包含 11.5 条件编译 功能:希望对程序中的一部分内容在满足一定条件时编译,否则不编译,或编译另一部分内容。 命令:#if、#elif、#else、#endif 基本格式: ■说明: 11.6 程序组织 问题: 当团队开发较大的程序时,如何对于多个源程序进行组织? 办法: 一般说来,团队成员必须达成一致,他们使用相同的方法组织他们的文件。为了保持一致性,通常把共享类型的定义放到头文件中,头文件以“.h”作为扩展名。函数的实现放到“.c”文件中。利用这种风格,类型可以保持更好的独立,也容易被其它程序应用 。 头文件 功能:实现.c文件之间的信息共享。可帮助写出移植性好、可重用性好的程序。 内容:包含需要共享的信息。 注意:一般不让#include命令包含.c文件。主要原因是,当该头文件被多个源程序包含时,会将该.c文件多次编译。同样,将函数体放在头文件中也会引发这类问题。 程序组织与条件编译 C语言中不允许出现循环包含 。 解决思路: 调整.h文件的内容,将其中的某个.h文件中的内容合并到别的.h文件中,当然合并时需要理清它们之间的先后关系。 * * C语言的预处理命令,宏替换的使用方法 程序的组织方式 11.1 概述 11.2 #define定义宏 11.3 预定义宏 11.4 #include包含 11.5 条件编译 11.6 程序组织 源文件 *.c 运行文件 *.exe 编译 编译 编译 目标文件 *.obj 连接 编译 连接 连接 编译预处理 编 译 分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般C语句相区别,这些命令以符号“#”开头。 源文件 *.c 运行文件 *.exe 目标文件 *.obj 编译 连接 main() { float r,s,c; scanf(“%f”,r); s = r * r * 3.14; c = 2 * r * 3.14; printf(“s=%f, c=%f”,s,c); } 如何修 改圆周率 #define 宏名 字符串 #undef 宏名 如果被取消的宏实际上没有被#define所定义,针对它的#undef并不会产生错误。当一个宏定义被取消后,可以再度定义它。 编译预处理后的程序: main( ) { float r; printf(\nInput r:); scanf(%f,r

文档评论(0)

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

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

1亿VIP精品文档

相关文档