文档详情

编译预处理 课件 .pdf

发布:2024-12-24约2.7千字共14页下载文档
文本预览下载声明

第九章

⚫主要内容

9.1宏定义

9.2文件包含

9.3条件编译

9.1宏定义

9.1.1不带参数的宏定义

一般形式为:

#define标识符字符串

【例9.1】半径已知,编程求圆的周长、面积和球的体积,并输出

结果。要求使用不带参数的宏定义圆周率。

#includestdio.h

#definePI3.1415926/*PI是宏名,3.1415926是用来替换宏名

的常数*/

voidmain()

{floatr,l,a,v;

printf(请输入圆的半径:);

scanf(%f,r);

l=2*PI*r;/*引用无参宏求周长*/

a=PI*r*r;/*引用无参宏求面积*/

v=PI*r*r*r*3/4;/*引用无参宏求体积*/

printf(周长=%.2f,面积=%.2f,球体积=%.2f\n,l,a,v);

}

9.1.2带参数的宏定义

带参宏定义的一般形式为:

#define宏名(形参表)字符串

【例9.2】带参数的宏定义。

#includestdio.h

#definePI3.1415926

#defineS(r)PI*r*r

voidmain()

{

floata,radius;

printf(“请输入圆半径:”);

scanf(“%f”,radius);

a=S(radius);/*宏调用*/

printf(“圆的面积为:%.2f”,a);

}

【例9.1.3】计算长方形的面积。

#defineS(a,b)a*b/*宏定义,形参为a和b*/

voidmain(void)

{intlen,wid,area;/*area代表长方形的面积*/

printf(请输入长和宽:);

scanf(%d%d,len,wid);

area=S(len+10,wid);

printf(area=%d\n,area);

/*宏调用中实参为len+10和wid*/

}

9.2文件包含

文件包含命令的一般形式为

#include包含文件名

#include包含文件名

以上两种格式的区别如下:

使用双引号:系统首先到当前目录下查找被包含

文件,如果没找到,再到系统指定的包含文件

目录(由用户在配置环境时设置)中查找。

使用尖括号:直接到系统指定的“包含文件目录”

中查找(称为标准方式)。

【例9.2.1】编写程序,比较两个整数的值,求出其中较大的那一个。

/*求两个整数中较大数的程序max.c*/

max(intx,inty)

{intm;

m=x;

if(yx)

m=y;

return(m);

}

【例9.2.2】利用上例中的文件,编写程序计算三个整数中最大的数,并输出。

#includestdio.h

#includemax.c

main()

{inta,b,c,z;

printf(“请输入三个整数:”);

scanf(“%d,%d,%d”,a,b,c);

z=max(a,b);

if(zc)

z=c;

printf(“最大数为:%d”,z);

}

9.3条件编译

条件编译有如下三种形式。

1、#ifdef~#endif命令。

该组命令一般格式为

#ifdef标识符

程序段1

#else

程序段2

#endif

【例9.3.1】条件编译示例程序。

#defineNUMok

voidmain(void)

{

#ifdefNUM/*条件编译预处理命

显示全部
相似文档