- 1、本文档共18页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
第八章编译预处理基础C语言程序设计重庆大学C程序设计技术第一章C程序设计初步第二章C程序的基本控制结构第三章函数第四章数组和字符串第五章C程序文件处理基础第六章指针第七章结构体和联合体数据类型第八章编译预处理基础第九章枚举类型和位运算第八章编译预处理基础编译预处理:C编译系统在C源程序编译之前,进行的一些预加工,然后再将处理的结果和源程序一起进行编译,得到目标代码。编译预处理命令都是以“#”号开始8.1?宏定义预处理命令及其简单应用8.2文件包含预处理命令及其简单应用8.3条件编译预处理命令及其简单应用8.1?宏定义预处理命令及其简单应用8.1.1不带参数的宏定义#define8.1.2带参数的宏定义#define8.1.1不带参数的宏定义宏定义格式:#define宏标识符字符串宏调用格式:宏标识符宏调用功能:在宏定义作用范围内,所有宏标识符用指定字符串替换。宏标识符也称为宏名或符号常量,习惯使用大写字母书写。例8.1宏定义预处理示例。#includestdio.h#definePI3.1415926#defineR2.0voidmain(){ doublecircum(); doublearea(); circum(); area(); printf(Circum=%f\n,circum()); printf(Area=%f\n,area());}doublecircum(){ return2.0*PI*R;}doublearea(){ returnPI*R*R;}doublecircum(){return2.0*3.1415926*2.0;} doublearea(){return3.1415926*2.0*2.0;}使用宏定义应注意:1).宏定义中字符串:字符串常量、表达式、语句、已定义的其它宏。例如宏定义: #definePI 3.1415926 #define R 5.0 #defineCirc retrun(2.0*PI*R);2).宏定义撤消:重新定义只含宏标识符的#define语句来撤消宏定义。例如:#defineR//撤消对R的宏定义3).源程序代码出现的宏名,不是都进行宏调用替换。例如:#defineloc12345 intlocal; 不替换成int12345al;#definePI3.14printf(“ThevalueofPIis:%f\n”,PI);不替换成printf(“Thevalueof3.14is:%f\n”,3.14);4).宏调用仅仅是一个替换例8.1宏调用替换问题的理解示例。#includestdio.h#defineN2#defineMN+2#defineMN2*Mvoidmain(){ intx=MN; printf(x=%d\n,x); }结果:x=68.1.1?不带参数的宏定义带参数宏定义格式:#define宏标识符(形参表)表达式字符串 带参数宏调用格式:宏标识符(实参表) 带参数宏调用功能:在宏定义范围内,宏识符用指定的表达式字符串替换,然后用宏调用中的实际参数替换表达式字符串中的形式参数。例8.2代参数宏定义使用示例。例8.3宏调用替换问题的理解示例。#includestdio.h#definePI3.145926#defineS(r)PI*r*rvoidmain(){ doublea,b,area1,area2; a=3.3; b=3.2; area1=S(a); area2=S(a+b); printf(area1=%f\narea2=%f\n,area1,area2);}程序运行结果为:area1=34.259134area2=24.141556#includestdio.h#defineMin(x,y)(x)(y)?(x):(y)voidmain(){ inta=1,b=2,c=3,d=4,
文档评论(0)