欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第9章_预处理命.ppt

    • 资源ID:78014834       资源大小:95.50KB        全文页数:12页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第9章_预处理命.ppt

    第九章第九章2 基本概念基本概念预处理命令是由预处理命令是由ANSI CANSI C统一规定的,但是它不是统一规定的,但是它不是C C语言语言本身的组成部分,不能直接对它们进行编译(因为编本身的组成部分,不能直接对它们进行编译(因为编译程序不能识别它们)。必须在对程序进行通常的编译程序不能识别它们)。必须在对程序进行通常的编译之前,先对程序中这些特殊的命令进行译之前,先对程序中这些特殊的命令进行“预处理预处理”。经过预处理后程序可由编译程序对预处理后的源程序经过预处理后程序可由编译程序对预处理后的源程序进行通常的编译处理,得到可供执行的目标代码。进行通常的编译处理,得到可供执行的目标代码。3提供的预处理功能主要有以下三种:提供的预处理功能主要有以下三种:宏定义宏定义文件包含文件包含条件编译条件编译 这些功能分别用宏定义命令、文件包含命这些功能分别用宏定义命令、文件包含命令、条件编译命令来实现。为了与一般语句令、条件编译命令来实现。为了与一般语句相区别,这些命令以符号相区别,这些命令以符号“”开头。开头。4 9.1 9.1 宏定义宏定义9.1.1 不带参数的宏定义不带参数的宏定义d defineefine 标识符标识符 字符串字符串例如:例如:d defineefine PI PI 3.14159263.1415926宏定义的作用是在本程序文件中用指定的标识符宏定义的作用是在本程序文件中用指定的标识符PIPI来代来代替替“3.14159263.1415926”这个字符串,在编译预处理时,在该命这个字符串,在编译预处理时,在该命令以后出现的所有的令以后出现的所有的PIPI都用都用“3.14159263.1415926”代替。代替。这个标识符(名字)称为这个标识符(名字)称为“宏名宏名”。在预编译时将宏名替换成字符串的过程称为在预编译时将宏名替换成字符串的过程称为“宏展开宏展开”。d defineefine是宏定义命令是宏定义命令。5 9.1.2 带参数的宏定义带参数的宏定义 作用:作用:不是进行简单的字符串替换,还要进不是进行简单的字符串替换,还要进行参数替换。行参数替换。d defineefine 宏名(参数表)宏名(参数表)字符串字符串 字符串中包含在括弧中所指定的参数字符串中包含在括弧中所指定的参数#d defineefine S(a,b)a*b S(a,b)a*b area=S(3,2);area=S(3,2);程序中用和分别代替宏定义程序中用和分别代替宏定义中的形式参数和中的形式参数和b b,用用*代代替替S(3,2)S(3,2)。因此赋值语句展开因此赋值语句展开为:为:area=3*2area=3*26书写书写#definedefine命令行应注意的几点命令行应注意的几点:(1 1)宏名与宏体之间应以空格相隔。)宏名与宏体之间应以空格相隔。(2 2)宏名不能用引号括起来)宏名不能用引号括起来(3 3)较长的定义在一行中写不下时,可在本行末尾使)较长的定义在一行中写不下时,可在本行末尾使用反斜杠用反斜杠()()表示要续行。表示要续行。(4 4)对带参宏定义,宏体及其各个形参应该用圆括号)对带参宏定义,宏体及其各个形参应该用圆括号括起来。括起来。(5 5)宏定义可以在源程序的任何地方,但一定要写在)宏定义可以在源程序的任何地方,但一定要写在程序中引用该宏之前。程序中引用该宏之前。7#include#define PI 3.1415926#define S(r)PI*r*rvoid main()float a,area;a=3.6;area=S(a);printf(r=%fnarea=%fn,a,area);运行情况如下:运行情况如下:=3.600000 area=40.715038赋值语句赋值语句“area=S(a);”经宏展开后为:经宏展开后为:area=3.1415926*;8#include#define p(x)2*x*xvoid main()int m,n,s;m=10;n=20;s=p(m+n);printf(“s=%d“,s);9#include#define p(x)2*x*xvoid main()int m,n,s;m=10;n=20;s=p(m+n);printf(“s=%d“,s);10#include#define p(x)2*x*xvoid main()int m,n,s;m=10;n=20;s=p(m+n);printf(“s=%d“,s);S=2*m+n*m+n;S=2*m+n*m+n;11宏与宏与函数的区别函数的区别1、时空效率不同、时空效率不同宏定义时要用宏体替换宏名,往往使程序膨宏定义时要用宏体替换宏名,往往使程序膨胀,加大了系统的存储开销。但是它不像函数调用胀,加大了系统的存储开销。但是它不像函数调用那样要进行参数传递、保存现场、返回等操作,所那样要进行参数传递、保存现场、返回等操作,所以时间效率比函数。以时间效率比函数。2、参数计算、传递方式不同、参数计算、传递方式不同宏虽然可以带有参数,但宏定义过程不像宏虽然可以带有参数,但宏定义过程不像函数那样要进行参数值的计算、传递及结果返回函数那样要进行参数值的计算、传递及结果返回等操作,宏定义只是简单的字符替换,并不进行等操作,宏定义只是简单的字符替换,并不进行计算。有一些过程是不能用宏来代替函数的,如计算。有一些过程是不能用宏来代替函数的,如递归调用。递归调用。12所谓所谓“文件包含文件包含”处理是指一个源文件可以将另外一处理是指一个源文件可以将另外一个源文件的全部内容包含进来。语言提供了个源文件的全部内容包含进来。语言提供了#includeinclude命令用来实现命令用来实现“文件包含文件包含”的操作。的操作。其一般形式为其一般形式为:#include 文件名文件名或或#include 9.2“文件包含文件包含”处理处理

    注意事项

    本文(第9章_预处理命.ppt)为本站会员(hyn****60)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开