文档详情

谭浩强C语言配套课件C第六章.pptx

发布:2025-05-04约4.4千字共8页下载文档
文本预览下载声明

第七章编译预处理

«作用:对源程序编译之前做一些处理,生

成扩展C源程序

«种类

v宏定义#define

v文件包含#include

v条件编译#if--#else--#endif等

«格式:

v“#”开头

v占单独书写行

v语句尾不加分号

§7.1宏定义宏体可缺省,表示宏名

«不带参数宏定义定义过或取消宏体

v一般形式:#define宏名[宏体]

v功能:用指定标识符(宏名)代替字符序列(宏体)

v定义如位#置de:f任ine意(Y一E般S在1函数外面)

#defineNO0

v作用域#:d从ef定ine义命PI令到3.文14件15结926束

v#unde#f可de终fine止宏O名UT作例用pr#域indtef(fi“nHeelloY,WESorld”);1

格式:宏名main()

例例##d#uedfniendfeienefWIWDITDHT{H…8…08.0.YES原作用域

()

v宏展开:预#d#编edfien译fein时eLE,用LNEG宏NT}G体HTH替W换IWDIT宏DHT名+H4+0-4--0不作语法检查

vavr=aLr=ELNEGNTGHT*H2#;*2u;ndefYES

v如

引号中宏的宏展内if展开(x容开:==:与vYaEvr宏=aSr)8=名0+8相(400+#同4d*p20e也r;f)i*inn2不te;f(“置cYor换EreSct!\0n”);

elseif(x==NO)mapxr(in)tf(“error!\n”);

v宏展开定后义:可嵌套,不能递归YES新作用域

例#deif(inxe==1P)I3.14p1{r5…in9t…f(“.c.orrect!\n”);

v例宏定#d义efpi中nriene使tfl(sM“用e2A*ifPX必(Ix=要=%=Mf的0\An)”X括,P+}pI号1*r02in)(;tf()“error!\n”)(;)

宏展开:printf(“2*PI=%f\n”,3.14159*2);

«带参数宏定义

v一般形式:#define宏名(参数表)宏体

例#defineS(a,b)a*b不能加空格

………..

area=S(3,2);

宏展开:area=3*2;

v宏展开:形参用实参换,其它字符保留

v宏体及各形参外一般应加括号()

例#defineS(r)PI*r*r

相当例于定#d义ef了ine不带PO参W宏ESR,代(x)表字x符*x串“(r)PI*r*r”

x=4;y=6;

z=POWER(x+y);

宏展开:z=x+y*x+y;

一般写成:#definePOWER(x)((x)*(

显示全部
相似文档