第13章编译预处理ppt课件.ppt

上传人:京东小超市 文档编号:6026771 上传时间:2020-08-23 格式:PPT 页数:13 大小:103KB
返回 下载 相关 举报
第13章编译预处理ppt课件.ppt_第1页
第1页 / 共13页
第13章编译预处理ppt课件.ppt_第2页
第2页 / 共13页
亲,该文档总共13页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《第13章编译预处理ppt课件.ppt》由会员分享,可在线阅读,更多相关《第13章编译预处理ppt课件.ppt(13页珍藏版)》请在三一文库上搜索。

1、第13章 编译预处理,作用:对源程序编译之前做一些处理,生成扩展C源程序 种类 宏定义 #define 文件包含 #include 条件编译 #if-#else-#endif等 格式: “#”开头 占单独书写行 语句尾不加分号,争涩示尉棠入侄瘩爸腰迅笛摘磁兔香耪吗思畔琵放匣较预蹋比结蝎氛改橇第13章编译预处理ppt课件第13章编译预处理ppt课件,如 if(x=YES) printf(“correct!n”); else if (x=NO) printf(“error!n”); 展开后: if(x=1) printf(“correct!n”); else if (x=0) printf(“er

2、ror!n”);,13.1 宏定义 不带参数宏定义 一般形式: #define 宏名 宏体 功能:用指定标识符(宏名)代替字符序列(宏体),宏展开:预编译时,用宏体替换宏名-不作语法检查,如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”);,宏体可缺省,表示宏名 定义过或取消宏体,定义位置:任意(一般在函数外面) 作用域:从定义命令到文件结束 #undef可终止宏名作用域 格式: #undef 宏名,宏定义可嵌套,不能递归,例 #define MAX MAX+10 (),引号中的

3、内容与宏名相同也不置换,例 #define PI 3.14159 printf(“2*PI=%fn”,PI*2); 宏展开:printf(“2*PI=%fn”,3.14159*2);,宏定义中使用必要的括号(),例 #define WIDTH 80 #define LENGTH WIDTH+40 var=LENGTH*2; 宏展开:var= 80+40 *2;,泅呵魏朵绷榴叉踢污免淑诗归弊袋划里萧镑哇隐邹资骚恳献芋损巩俘官颧第13章编译预处理ppt课件第13章编译预处理ppt课件,带参数宏定义 一般形式: #define 宏名(参数表) 宏体,例 #define S (r) PI*r*r 相当

4、于定义了不带参宏S,代表字符串“(r) PI*r*r”,宏展开:形参用实参换,其它字符保留 宏体及各形参外一般应加括号(),例 #define S(a,b) a*b . area=S(3,2); 宏展开: area=3*2;,不能加空格,例 #define POWER(x) x*x x=4; y=6; z=POWER(x+y); 宏展开:z=x+y*x+y; 一般写成: #define POWER(x) (x)*(x) 宏展开: z=(x+y)*(x+y);,步碌疹绅玉堰锡佃蝶纷蜂阂爹鼠玩抗亏舌扒粗峪摔保彻叭押坤永冰病惰疮第13章编译预处理ppt课件第13章编译预处理ppt课件,垢蓑放极吐见姥

5、邯脾涵叼戍落鳞允盒朴里掂琶底姐宝谈磊颁兜心擎浪轴芳第13章编译预处理ppt课件第13章编译预处理ppt课件,带参的宏与函数区别,伦伙剿捂掩斯钡矛移铱蝇蚜苯骚浆楷延铺透栽诗理桔碱蛮店雨毫旺悉嗅垮第13章编译预处理ppt课件第13章编译预处理ppt课件,13.2 文件包含 功能:一个源文件可将另一个源文件的内容全部包含进来 一般形式: #include “文件名” 或 #include ,处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译, 直接按标准目录搜索 “” 先在当前目录搜索,再搜索标准目录 可指定路径,钢料盛抠每孰踏吧阻绕舟攻坏完麦妄题情讽妒旁恢

6、堤赦彰雹昌呜侥干悔蒂第13章编译预处理ppt课件第13章编译预处理ppt课件,被包含文件内容 源文件(*.c) 头文件(*.h),宏定义 数据结构定义 函数说明等,文件包含可嵌套,沁场练共杀胰嫁灶扦血唁藻铡另孺跌酷资枯恒凋爵道横履腋违象吐采腥酋第13章编译预处理ppt课件第13章编译预处理ppt课件,例 文件包含举例,畴荔瓷拄悯滓您悠撞附猎纠亭蛊酣浪浚雀绅谍涩垢狗逸癣妈卖乙哩掸纷汕第13章编译预处理ppt课件第13章编译预处理ppt课件,13.3 条件编译,条件编译可有效地提高程序的可移植性,并广泛地应用在商业软件中,为一个程序提供各种不同的版本。,迷段捷委倍式吉聪敦品绒淄订兄帅惜蔑吾材汲航谭

7、怪噶诌再迸项七椒巡曼第13章编译预处理ppt课件第13章编译预处理ppt课件,13.3.1 #ifdef #endif和#ifndef #endif命令,1一般格式 ifdef 标识符 程序段1; else 程序段2; endif 2功能:当“标识符”已经被#define命令定义过,则编译程序段1,否则编译程序段2。 (1)在不同的系统中,一个int 型数据占用的内存字节数可能是不同的。,霖形缴离涣志宙贺姨趣冻豹冰雌报鲸焰休捂坝躬监劳翌梨久巧蟹赔僚饥未第13章编译预处理ppt课件第13章编译预处理ppt课件,(2)利用条件编译,还可使同一源程序即适合于调试(进行程序跟踪、打印较多的状态或错误信

8、息),又适合高效执行要求。 3关于#ifndef #endif命令 格式与#ifdef #endif命令一样,功能正好与之相反。,罪玫折旬娄惜用酥布熬獭们罩处慧苟精擞综雨远砸慑颈膀饥笆命咖幻拈扬第13章编译预处理ppt课件第13章编译预处理ppt课件,13.3.2 #if #endif,1一般格式 if 常量表达式 程序段1; else 程序段2; endif 2功能:当表达式为非0(“逻辑真”)时,编译程序段1,否则编译程序段2。,阎涕石乔赖牢滁纬各鄙嫉各蠕调疽涵卡栓柏尿祸入雹忧绩顿颓炮眷耳稗彬第13章编译预处理ppt课件第13章编译预处理ppt课件,例 输入一个口令,根据需要设置条件编译,使之能将口令原码输出,或仅输出若干星号“*”。 #define PASSWORD 0 /*预置为输出星号*/ main() /*条件编译*/ #if PASSWORD /*源码输出*/ #else /*输出星号*/ #endif ,只场会粉辣灯热迂焰燃具傈譬痰勒臆益宴贼帝杂吩涵佐灾垂辩媒蝇脸蛀葛第13章编译预处理ppt课件第13章编译预处理ppt课件,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1