欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    c语言编译预处理全解ppt课件.ppt

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

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

    c语言编译预处理全解ppt课件.ppt

    C语言程序设计,第8章 编译预处理,问题:实际生活中,为了更好地处理一些事件或数据,会对其提前进行设定和准备,如:,用代表圆周率3.14为避免重复,对已有的实行“拿来主义”。,ANSI C标准规定可以在源程序中加入一些“预处理命令” ,以改进程序设计环境,提高编程效率。,引子,本章重点,第8章 编译预处理,本章难点,宏定义命令 条件编译命令 文件包含命令,带参宏定义 条件编译,编译预处理,作用:对源程序编译之前做一些处理,生成扩展C源程序种类宏定义 #define文件包含 #include条件编译 #if-#else-#endif等格式:“#”开头占单独书写行语句尾不加分号,8.1,8.2,8.3,宏定义,条件编译,文件包含,第8章 编译预处理,如 if(x=YES) printf(“correct!n”); else if (x=NO) printf(“error!n”);展开后: if(x=1) printf(“correct!n”); else if (x=0) printf(“error!n”);,宏定义的分类无参数宏定义一般形式: #define 标识符 替换文本功能:用指定标识符(宏名)代替替换文本(宏体),宏展开:预编译时,用宏体替换宏名-不作语法检查,如 #define YES 1 #define NO 0 #define PI 3.1415926 #define OUT printf(“Hello,World”);,宏体可缺省,表示宏名定义过或取消宏体,定义位置:任意(一般在函数外面)作用域:从定义命令到文件结束#undef可终止宏名作用域 格式: #undef 标识符,宏定义可嵌套,不能递归,例 #define MAX MAX+10 (),引号中的内容与宏名相同也不置换,例 #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;,8.1 宏定义,例8.1 用不带参数的宏定义计算s=3*(y*y+3*y)+4*(y*y+3*y)+5*(y*y+3*y),#define M (y*y+3*y)main() int s,y; printf(Please input a number: ); scanf(%d,运行情况如下:Please input a number: 4s=336,算法分析:单在计算式子中出现了三个(y*y+3*y),为减少书写量,可使用宏定义。,带参数宏定义一般形式: #define 宏名(参数表) 替换文本,例 #define S (r) PI*r*r相当于定义了不带参宏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);,8.1 宏定义,#define MAX(x,y) (x)(y)?(x):(y) main() int x,y,max; printf(input two numbers(x,y): ); scanf(%d,%d,例8.4 用带参宏定义求两数中的大者。,运行情况如下:input two numbers(x,y): 5,6max=6,例8.5 一个宏定义代表多条语句。,#define SSSV(s1,s2,s3,v) s1=l*w; s2=l*h; s3=w*h; v=w*l*h;main() int l=3,w=4,h=5,sa,sb,sc,vv; SSSV(sa,sb,sc,vv); printf(sa=%dnsb=%dnsc=%dnvv=%dn,sa,sb,sc,vv);,运行情况如下:sa=12sb=15sc=20vv=60,带参的宏与函数区别,8.1,8.2,8.3,宏定义,条件编译,文件包含,第8章 编译预处理,条件编译的功能:在编译源文件之前,根据给定的条件决定编译的范围。形式一: #ifdef 标识符 程序段1 #else 程序段2 #endif,如果标识符是已被 #define命令定义过的宏名,就对程序段1进行编译;否则对程序段2进行编译。,8.2 条件编译,条件编译举例,#define DEBUG main() int a=4; #ifdef DEBUG printf(Now the programmer is debugging the program.); #else printf(a=%d.,a); #endif,若没有第一行的宏定义命令,程序运行后会输出:a=4.,运行情况如下:Now the programmer is debugging the program.,条件编译形式二:#ifndef 标识符 程序段1 #else 程序段2 #endif,如果标识符未被#define命令定义过,就对程序段1进行编译;否则对程序段2进行编译。,形式三:#if 常量表达式 程序段1 #else 程序段2 #endif,如果常量表达式的值为真(非0),就对程序段1进行编译;否则对程序段2进行编译。,例8.10 设置一个开关,判断输入值是半径还是边长,实现求圆或正方形的面积。,#define R 1main() float c,r,s; printf (input a number:); scanf(%f, #endif,运行情况如下:input a number:3area of round is: 28.274309,若程序的第一行改为:#define R 0则程序运行情况如下:input a number:3area of square is: 9.000000,条件编译的应用一套程序要产生不同的版本(如演示版本和实际版本)、避免重复定义时,往往使用条件编译。,在程序调试时,经常需要查看某些变量的中间结果。这时可以使用条件编译,在程序中设置若干调试用的语句。例如:#define FLAG 1 #if FLAG printf(a=%d,a);#endif,8.1,8.2,8.3,宏定义,条件编译,文件包含,第8章 编译预处理,文件包含的功能:一个源文件可将另一个源文件的内容全部包含进来。一般形式: #include “文件名” 或 #include ,处理过程:预编译时,用被包含文件的内容取代该预处理命令,再对“包含”后的文件作一个源文件编译。,“” 先在当前目录搜索,再搜索标准目录;可指定路径 直接按标准目录搜索,不能指定路径,8.3 文件包含,例 #include C:TCF2.c #include ,被包含文件内容源文件(*.c)头文件(*.h),stdio.h:EOF和NULL宏定义及输入输出函数的原型 math.h:各个数学函数的原型 io.h:数据类型struct ftime的定义,文件包含可嵌套,将那些公用的或常用的宏定义、函数原型、数据类型定义及全局变量的定义和声明等,组织在一些头文件中,在程序需要使用到这些信息时,就用#include命令把它们包含到所需的位置上去,从而免去每次使用它们时都要重新定义或声明的麻烦。,例8.11 用户头文件的编写和使用,#ifndef _L8_11_H/*定义宏,以防止重复包含此头文件*/ #define _L8_11_H #include #define ADD(a,b) (a)+(b) /*定义宏,实现两数的加法*/ #define SUB(a,b) (a)-(b) /*定义宏,实现两数的减法*/ int MUL(int a,int b) /*定义函数,实现两数的乘法*/ return a*b; float DIV(float a,float b) /*定义函数,实现两数的除法*/ if(b!=0) return a/b; else printf(Error! The deno cannot be zero!); #endif,头文件 L8_11.h,#include L8_11.h /*包含自定义头文件*/main() int a,b; int sum,product; float difference,quotient; printf(Please input two numbers:); scanf(%d,%d,程序运行情况如下:Please input two numbers:34,12sum=46 difference=22.000000product=408 quotient=2.833333,注意一个#include命令只能包含一个头文件,若有多个文件要包含,则需用多个#include命令。例如:如果file1.c中包含file2.c,而file2.c中要用到file3.c的内容则可在file1.c中用两个#include命令进行包含,包含顺序如下:#include file3.c#include file2.c当某个头文件的内容发生变化时,意味着包含该头文件的源程序也发生变化,所以需要重新编译。,本章小结,

    注意事项

    本文(c语言编译预处理全解ppt课件.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

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




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开