(精品)xcc_c_9

上传人:无*** 文档编号:252957520 上传时间:2024-11-26 格式:PPT 页数:20 大小:63.50KB
返回 下载 相关 举报
(精品)xcc_c_9_第1页
第1页 / 共20页
(精品)xcc_c_9_第2页
第2页 / 共20页
(精品)xcc_c_9_第3页
第3页 / 共20页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第九章 预处理命令,宏定义,“文件包含”处理,条件编译,第九章 预处理命令,一、宏定义,1.不带参数的宏定义,定义的一般形式:,#,define,标识符 字符串,凡是以,“#”,开头的均为预处理命令。,“,define”,为宏定义命令,“,标识符,”,为所定义的宏名,“,字符串,”,可以是常数、表达式、格式串等,例如:,#,define PI 3.1415926,第九章 预处理命令,程序举例:,#define PI 3.14,main(),int,r;,scanf,(“r:%d”,printf,(“s=%dn”,r*PI);,第九章 预处理命令,无参宏定义的一般规律:,宏名一般用大写字母表示,使用宏名代替程序中经常出现的常量,宏定义是用宏名来代替一个字符串,在宏展开时又以该字符串取代宏名,预处理程序对它不作任何检查。如有错误,只能在编译已被宏展开后的源程序时发现,第九章 预处理命令,宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换,定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用,#,undef,命令,(举例),宏名在源程序中若用引号括起来,则预处理程序不对其作宏代换(举例),第九章 预处理命令,宏定义允许嵌套,在宏定义的字符串中可以使用已经定义的宏名,(举例),可用宏定义表示数据类型,使书写方便,但要和,typedef,相区别,(举例),对“输出格式”作宏定义,可以减少书写麻烦,,但不建议使用(举例),第九章 预处理命令,2.带参数的宏定义,定义的一般形式:,#,define,宏名,(,形参表,),字符串,带参宏调用的一般形式为:,宏名,(,实参表,),;,例如:#,define M(y)y*y+3*y,k=M(5);,相当于,k=5*5+3*5;,第九章 预处理命令,带参宏定义的一般规律:,宏名和形参表之间不能有空格出现(举例),形式参数不分配内存单元,因此不必作类型定义。而宏调用中的实参有具体的值。要用它们去代换形参,因此必须作类型说明,在宏定义中的形参是标识符,而宏调用中的实参可以是表达式(举例),第九章 预处理命令,在宏定义中,字符串内的形参通常要用括号括起来以避免出错,(举例),第九章 预处理命令,二、文件包含,一个源文件可将另一个源文件的内容全部包含进来,一般形式:,#,include,文件名,或,#,include,一般库文件用,用户自定义文件用,第九章 预处理命令,三、条件编译,1.,第一种形式:,#,ifdef,标识符,程序段1,#,else,程序段2,#,endif,第九章 预处理命令,功能:,如果标识符已被#,define,命令定义过则对程序段1进行编译;否则对程序段2进行编译。如果没有程序段2(它为空),本格式中的#,else,可以没有,即可以写为:,#,ifdef,标识符,程序段,#,endif,第九章 预处理命令,程序举例:,main(),#,ifndef,PI,printf,(“PI is not definedn”);,#,endif,第九章 预处理命令,2.第二种形式:,#,ifndef,标识符,程序段1,#,else,程序段2,#,endif,第九章 预处理命令,功能:,如果标识符未被,#,define,命令定义过则对程序段,1,进行编译,否则对程序段,2,进行编译。与第一种形式的功能正相反,第九章 预处理命令,3.第三种形式:,#,if,常量表达式,程序段1,#,else,程序段2,#,endif,第九章 预处理命令,功能:,如常量表达式的值为真,(,非,0),,则对程序段,1,进行编译,否则对程序段,2,进行编译。因此可以使程序在不同条件下,完成不同的功能,第九章 预处理命令,程序举例:,#define PI 3.14,main(),#,ifndef,PI,printf,(“PI is not defined”);,#else,printf,(“PI is defined to”,PI);,#,endif,printf,(“n”);,小结,1.,预处理功能,是语言,特有,的功能,它是在对源程序正式编译前由预处理程序完成的。程序员在程序中用预处理命令来调用这些功能,2.,宏定义,是用一个标识符来表示一个字符串,这个字符串可以是常量、变量或表达式。在宏调用中将用该字符串代换宏名,3.,宏定义可以带有,参数,,宏调用时是以实参代换形参。而不是“值传送”,小结,4.,为了避免宏代换时发生错误,宏定义中的字符串应加,括号,,字符串中出现的形式参数两边也应加,括号,5.,文件包含,是预处理的一个重要功能,它可用来把多个源文件连接成一个源文件进行编译,结果将生成一个目标文件,6.,条件编译,允许只编译源程序中满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率,7.,使用预处理功能便于程序的修改、阅读、移植和调试,也便于实现模块化程序设计,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


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