文档详情

第8章 编译预处理.pptx

发布:2025-03-07约3.93千字共24页下载文档
文本预览下载声明

八、编译预处理宏定义2文件包含命令3小型案例5任务71条件编译4

任务分析1求解某校园圆形花坛的圆周长及圆面积要解决这类问题,首先为所需使用的常量确定好便于记忆和理解的符号标识,以便构造程序和整理程序文本,从而也方便程序的修改和移值,接下来按程序功能编码。程序中运用圆周长计算公式及圆面积计算公式进行计算,公式书写符合C语言语句形式即可。返回首页

任务分析1要解决这类问题,首先为所需使用的常量确定好便于记忆和理解的符号标识,以便构造程序和整理程序文本,从而也方便程序的修改和移值,接下来按程序功能编码。程序中运用圆周长计算公式及圆面积计算公式进行计算,公式书写符合C语言语句形式即可。数据需求问题输入r/*表示圆的半径*/问题输出circ/*存放圆的周长*/area/*存放圆的面积*/返回首页

任务分析1求解圆周长及面积的程序*/#includestdio.h/*预处理,头文件对printf,scanf函数的声明*/#definePI3.14159/*定义符号常量PI*/doublecirc(r)doubler;{return(2.0*PI*r);}doublearea(r)返回首页

任务分析1doubler;{return(PI*r*r);}main(){doubler;/*定义双精度型变量r*/printf(“请输入待求圆半径:”);/*输入圆的半径*/scanf(“%lf\n”,r);printf(“所求圆的周长%.4f=circ\n”,circ(r));/*所求圆的周长*/printf(“所求圆的面积%.4f=area\n”,area(r));/*所求圆的面积*/}运行结果:请输入待求圆半径:1.0所求圆的周长=6.2832所求圆的面积=3.1416返回首页

宏定义1宏定义是编译预处理内容之一,C语言的宏定义分为两种形式,即带参数的宏定义和不带参数的宏定义两种形式。返回首页

无参宏定义1无参宏是用一个简单的名字代替一长的字符串,一般定义格式为:#define符号常量名字符串其中符号常量名称为宏名,习惯上用大写字母表示,常量名与所对应的字符串间用空格符隔开,在程序中,凡出现符号常量名的地方,经编译预处理后就都被替换为它所对应的字符串,即所谓的宏展开。行尾无需符号

无参宏定义1例8.1无参宏应用举例#includestdio.h#defineR3.0#definePI3.1415926#defineL2*PI*R#defineSPI*R*Rmain(){printf(“L=%f\nS=%f\n”,L,S);}程序运行结果为:L=18.849556S=28.274333

带参宏定义1除简单的宏定义(即不带参的宏)外,C语言预处理还允许带参数的宏定义,进行预处理时不仅对定义的宏名进行替换,而且还进行参数替换,定义的一般格式为:#define宏名(参数表)字符串其中,字符串中应该包含在参数表中所指定的参数注意:使用宏定义所带的实参可以是常量、已被赋值的变量或表达式,一个宏定义所带参数可以多于一个,使用带参宏编程时,应注意在宏定义中宏名和左括号间没有空格,另外带参宏还允许宏定义嵌套。返回首页返回节首

2带参宏定义例8.2带参宏应用举例#includestdio.h#definePI3.1415926#defineCIRCLE(R,V)V=4.0/3.0*PI*R*Rmain(){floatr,v;scanf(“%f”,r);CIRCLE(r,v);printf(“r=%6.2f,v=%6.2f\n”,r,v);}程序运行结果为:3.5r=3.50,v=179.59返回首页

2宏命令#undef用于终止宏定义的作用域,一般形式为:#undefine宏名例如:#defineG9.8main(){…../*G的有效范围是从定义开始到#undefG止*/}#undefGf1(){……}分析:由于在函数f1()之前终止了宏名G的作用,故G不再在f1()中起作用,#undef也可用于函数内部。终止宏定义

2所谓文件包含预处理是指在一个文件中将另外一个文件的全部内容包含进来的处理过程,即将另外的文件包含到本文件中。C语言编译预处理命令#include实现包含操作,一般形式为:#include文件名或#include“文件

显示全部
相似文档